这就是我想要做的。我定义了2个数据模板,它们都引用了不同的用户控件。
<UserControl.Resources>
<DataTemplate x:Key="myDataTemplate1">
<Border BorderBrush="Black" BorderThickness="1">
<myUserControl1 />
</Border>
</DataTemplate>
<DataTemplate x:Key="myDataTemplate2">
<Border BorderBrush="Black" BorderThickness="1">
<myUserControl2/>
</Border>
</DataTemplate>
</UserControl.Resources>我使用这些数据模板来显示使用ItemsControl的项目列表,如下所示:
<ItemsControl x:Name="myItemList" ItemTemplate="{StaticResource myDataTemplate1}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate />
</ItemsControl.ItemsPanel>
</ItemsControl>我希望ItemTemplate有条件地为myDataTemplate1或myDataTemplate1,这取决于整数变量的值分别为1或2。
我应该使用DataTriggers来完成这项工作吗?或者有其他方法可以做到这一点吗?感谢你的帮助。
发布于 2012-01-29 06:32:55
不要设置ItemTemplate,但要使用ItemTemplateSelector。
当然,DataTriggers也可以,为选择器省去了额外的类。例如:
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding ThatProperty}" Value="1">
<Setter Property="ContentTemplate"
Value="{StaticResource myDataTemplate1}" />
</DataTrigger>
<DataTrigger Binding="{Binding ThatProperty}" Value="2">
<Setter Property="ContentTemplate"
Value="{StaticResource myDataTemplate2}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>https://stackoverflow.com/questions/9049197
复制相似问题