我正在尝试使用TreeView将项目显示为TextBlock,然后基于数据绑定对象内部的布尔值来生成FontWeight Normal或Bold,几乎是以下内容:
<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等等),所以我现在完全不知所措!
答案 0 :(得分:0)
在数据触发器上设置值。
答案 1 :(得分:0)
我不确切知道你的房产在哪里,尝试这样的事情。我认为,绑定问题:
<DataTrigger Binding="{Binding Path=DataContext.ShowInPreview, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}">