有条件地将Foreground绑定到布尔值

时间:2009-03-07 14:13:09

标签: wpf data-binding

我有一个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的精神!我该怎么做呢?

编辑:谢谢,就像那样,现在我知道要阅读哪一章。

1 个答案:

答案 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>

您还可以将触发器创建为资源,并在不同模板之间共享。