我有一个Treeview显示Xml数据,其中每个元素都包含在一个暴露IsExpanded的类中,包装的XElement的Name和Value以及一个布尔值MatchesFilter,如果该元素与特定的过滤器匹配,则设置它;如果MatchesFilter为true,我想更改前景色。
我目前拥有的是:
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Width="110" Foreground="Blue" Text="{Binding Name}" />
<TextBlock Foreground="{Binding Foreground}" Text="{Binding Value}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
前景颜色在代码隐藏中设置,它工作得很好,但很难在WPF的精神!我该怎么做呢?
编辑:谢谢,就像那样,现在我知道要阅读哪一章。
答案 0 :(得分:1)
这样的东西?
<TextBlock Name="tbkValue" Text="{Binding Value}"/>
...
<HierarchialDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=MatchesFilter}" Value="True">
<Setter TargetName="tbkValue" Property="Foreground" Value="Red"/>
</DataTrigger>
</HierarchialDataTemplate.Triggers>
您还可以将触发器创建为资源,并在不同模板之间共享。