콘텐츠 제어 및 데이터 트리거를 사용하여이를 달성 할 수 있습니다. 가시성을 가지고 놀 필요가 없습니다.
다음은 명확한 아이디어를 제공 할 샘플입니다. 아래 샘플에서는 데이터 항목으로 콤보 상자에서 선택한 항목을 사용하여 콘텐츠 컨트롤을 가져 왔습니다. 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하기