タイプ「DataTemplate」のDependencyProperty「ItemTemplate」を持つカスタムUserControlがあります。.LoadContent() を介してこの ItemTemplate のインスタンスを作成し、.DataContext を割り当てて、ContentControl に配置します。私が持っている唯一の欠点は、DataTemplate.Triggers が起動されないことです。
Xaml コードの例:
<Window.Resources>
<DataTemplate x:Key="MyTemplate">
<Label Name="MyLabel" Content="Default"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="1">
<Setter TargetName="MyLabel" Property="Content" Value="True" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="0">
<Setter TargetName="MyLabel" Property="Content" Value="False" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<ContentControl x:Name="MyContent" />
コード ビハインドの例:
private void Window_Loaded(object sender, RoutedEventArgs e) {
var template = FindResource("MyTemplate") as DataTemplate;
var instance = template.LoadContent() as FrameworkElement;
instance.DataContext = "1";
MyContent.Content = instance;
}
出力は「デフォルト」です。
ListBox で使用される同じ DataTemplate は正常に機能します。
<ListBox x:Name="MyListBox" ItemTemplate="{StaticResource MyTemplate}" />
コードビハインド:
MyListBox.ItemsSource = new[] { "1", "0" };
出力は「True」と「False」です。
DataTemplate.Triggers を起動する方法はありますか? すべてのトリガーを手動で切り替えて実行する必要がありますか? はいの場合、トリガーを評価するにはどうすればよいですか?
前もって感謝します、
キリスト教徒