Wpf DataTemplate、LoadContent和DataTriggers未触发
我有一个自定义UserControl,它具有类型为“DataTemplate”的DependencyProperty“ItemTemplate”。我通过.LoadContent()创建此ItemTemplate的一个实例,分配.DataContext并将其放入ContentControl。我唯一的缺点是DataTemplate.Triggers没有被激发 Xaml代码示例:Wpf DataTemplate、LoadContent和DataTriggers未触发,wpf,datatemplate,datatrigger,Wpf,Datatemplate,Datatrigger,我有一个自定义UserControl,它具有类型为“DataTemplate”的DependencyProperty“ItemTemplate”。我通过.LoadContent()创建此ItemTemplate的一个实例,分配.DataContext并将其放入ContentControl。我唯一的缺点是DataTemplate.Triggers没有被激发 Xaml代码示例: <Window.Resources> <DataTemplate x:Key="MyTempla
<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" />
输出为“默认”
列表框中使用的相同数据模板可以正常工作:
<ListBox x:Name="MyListBox" ItemTemplate="{StaticResource MyTemplate}" />
输出为“真”和“假”
你知道如何触发DataTemplate.Triggers吗?我是否需要手动循环所有触发器并执行它们?如果是,我如何评估触发器
提前感谢,
Christian将您的
数据模板
应用于内容控件
,而不是像您这样动态修改它:
MyContent.ContentTemplate = FindResource("MyTemplate") as DataTemplate;
MyContent.Content = "1";
是的,这就成功了(一个小类型,你指的是MyContent.Content=“1”(或“0”))。谢谢
MyListBox.ItemsSource = new[] { "1", "0" };
MyContent.ContentTemplate = FindResource("MyTemplate") as DataTemplate;
MyContent.Content = "1";