Textblock 不会在 HierarchicalDataTemplate 中接收触发器

Textblock won't recieve trigger in HierachicalDataTemplate

我正在尝试让 TreeView 将项目显示为 TextBlock,然后根据数据绑定对象中的布尔值来设置 FontWeight 普通或粗体,大致如下:

<TreeView x:Name="TreeView" ItemsSource="{Binding Layers}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type viewModels:Layer}" ItemsSource="{Binding Path=Layers}">
            <TextBlock Text="{Binding Path=Name}">
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Setter Property="FontWeight" Value="Normal" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=ShowInPreview}">
                                <Setter Property="FontWeight" Value="Bold" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

触发器外的 Setter 实际上有效,当我将其设置为 "Bold" 时,一切立即变为粗体。只是 DataTrigger 永远不会触发 :P

ItemSource 实现 INotifyPropertyChanged,所有属性(包括 ShowInPreview)上的 Layer 对象也是如此。

我已经尝试了各种可以在网上找到的不同设置(使用 Window.Resources、将其放入 TreeView.ItemContainerStyle 等),所以我完全不知所措现在!

在数据触发器上设置值。

我不知道你的 属性 到底在哪里,试试这样的东西。我认为,绑定问题:

<DataTrigger Binding="{Binding Path=DataContext.ShowInPreview, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}">