これが私がやろうとしていることです。 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>
整数変数の値がそれぞれ1または2であるかどうかに応じて、ItemTemplateを条件付きでmyDataTemplate1またはmyDataTemplate1にしたいと考えています。
これにDataTriggersを使用する必要がありますか、これを行う別の方法はありますか?ヘルプに感謝します。
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>