2011-09-06 79 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

相關問題