我需要显示不同的控件,这取决于用户在下拉列表中所做的选择。也就是说,如果用户为日期作出选择,则应显示日期选择控件,或文本输入框用于文本输入.或者一组用于更复杂选择的控件。
因此,我们的想法是创建多个用户控件,然后在所需的时间显示所需的控件。我想要一些更优雅的东西,而不是“有形的真假”属性。
发布于 2011-09-06 00:17:44
您可以使用内容控制和数据触发器来实现它。没必要玩能见度游戏。
这是一个样本,可以给你一个清晰的想法。在下面的示例中,我使用了一个内容控件,其中的组合框选择项作为数据文本。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。
发布于 2011-09-05 23:45:40
我想要更优雅的东西,而不是使用“可见的真/假”属性。
-)无论如何,你都会如愿以偿的.
这太微不足道了..。任何体面的WPF相关教程都会帮助你.
为了快速启动,您必须使用ComboBox的Binding
的SelectedItem
和所有您想通过适当的值转换器隐藏/显示的控件的Visibility
。
https://stackoverflow.com/questions/7316362
复制