2011-09-06 80 views
0

根据用户在下拉列表中进行的选择,我需要显示不同的控件。也就是说,如果用户选择日期,应该显示日期选择控件,或者文本输入框用于文本输入...或者用于更复杂选择的一组控件。根据用户对下拉列表的选择显示控件

所以这个想法是创建多少用户控件,然后在需要的时间显示所需的控件。我想要一些比'可见真/假'属性更加优雅的东西。

回答

0

我想要一些比'可见真/假'属性更加优雅的东西。

:-)你将土地完全调这样做,反正....

这是太微不足道了......什么像样的WPF相关的教程将帮助您与此...

刚为了快速启动,您必须使用ComboBox的SelectedItemBindingVisibility所有您想通过适当的值转换器隐藏/显示的控件。

1

您可以使用内容控制和数据触发器来实现它。无需玩可见性。

下面是一个示例,它会给你清晰的想法。 在下面的示例中,我使用了组合框选定项目的内容控件作为datacontext。 XAML代码:

<StackPanel Orientation="Vertical" Width="150"> 
     <ComboBox Name="Controls"></ComboBox> 
     <ContentControl DataContext="{Binding ElementName=Controls,Path=SelectedItem}"> 
      <ContentControl.Style> 
       <Style TargetType="ContentControl"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding}" Value="Date"> 
          <Setter Property="Content"> 
           <Setter.Value> 
            <DatePicker Height="30"></DatePicker> 
           </Setter.Value> 
          </Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding}" Value="Text"> 
          <Setter Property="Content"> 
           <Setter.Value> 
            <TextBox Height="30"></TextBox> 
           </Setter.Value> 
          </Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding}" Value="Button"> 
          <Setter Property="Content"> 
           <Setter.Value> 
            <Button Height="30"></Button> 
           </Setter.Value> 
          </Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding}" Value="Checkbox"> 
          <Setter Property="Content"> 
           <Setter.Value> 
            <CheckBox Height="30"></CheckBox> 
           </Setter.Value> 
          </Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </ContentControl.Style> 
     </ContentControl> 
    </StackPanel> 

代码背后:

InitializeComponent(); 
      List<string> controlTypes = new List<string> { "Date", "Text", "Button", "Checkbox" }; 
      Controls.ItemsSource = controlTypes; 

注意:有关创建我用后面的代码示例...您可以轻松地将其转换为MVVM

相关问题