小编Chr*_*rkl的帖子

DataTemplate、LoadContent 和 DataTriggers 未触发

我有一个自定义 UserControl,它具有类型为“DataTemplate”的 DependencyProperty“ItemTemplate”。我通过 .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" />
Run Code Online (Sandbox Code Playgroud)

后面的示例代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

输出为“默认”。

ListBox 中使用的相同 DataTemplate 工作正常:

<ListBox x:Name="MyListBox" …
Run Code Online (Sandbox Code Playgroud)

wpf datatrigger datatemplate

5
推荐指数
1
解决办法
2771
查看次数

标签 统计

datatemplate ×1

datatrigger ×1

wpf ×1