2011-09-06 7 views
0

사용자가 드롭 다운에서 선택한 항목에 따라 다른 컨트롤을 표시해야합니다. 즉, 사용자가 날짜를 선택하면 날짜 선택 컨트롤이 표시되거나 텍스트 입력 상자의 텍스트 입력 상자 ... 또는 더 복잡한 선택을위한 컨트롤 집합입니다.드롭 다운 목록의 사용자 선택에 따라 컨트롤 표시

따라서 사용자 컨트롤의 수를 늘린 다음 원하는 시간에 필요한 컨트롤을 표시하는 것이 좋습니다. '보이는 true/false'속성으로 faffing하는 것보다 더 우아한 것을 원한다.

답변

0

'시각적 사실/허위'속성을 사용하는 것보다 더 고급스러운 것을 원합니다.

:-) 당신은 .... 그 어쨌든 정확하고

이 어떤 점잖은 WPF 관련 튜토리얼이 당신을 도울 것입니다 ... 너무 간단하다 ...

단지를 착륙한다 빠른 시작을 위해서는 ComboBox의 SelectedItemBindingVisibility의 적절한 값 변환기를 통해 숨기거나 표시하려는 컨트롤을 사용해야합니다.

1

콘텐츠 제어 및 데이터 트리거를 사용하여이를 달성 할 수 있습니다. 가시성을 가지고 놀 필요가 없습니다.

다음은 명확한 아이디어를 제공 할 샘플입니다. 아래 샘플에서는 데이터 항목으로 콤보 상자에서 선택한 항목을 사용하여 콘텐츠 컨트롤을 가져 왔습니다. 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하기
관련 문제