通过触发器更改TreeViewItem标头

时间:2009-03-20 18:19:45

标签: wpf header treeviewitem

有这样的风格

<Style TargetType="TreeViewItem">
  <Style.Triggers>
    <Trigger Property="IsExpanded" Value="True">
      <Setter Property="Header" Value="Pink"></Setter>
    </Trigger>
  </Style.Triggers>
</Style>

我希望扩展的TreeViewItems的文本是“粉红色”,但实际上没有设置。如果我改为Property =“Background”,它会起作用。 标题背景的不同之处?

2 个答案:

答案 0 :(得分:3)

我想我需要更多信息来更全面地回答这个问题。但是,如果我不得不猜测,我会说你可能会像这样明确地在TreeViewItem上设置Header属性:

<TreeView>
    <TreeViewItem
        Header="Blue"/>
</TreeView>

并且,在这种情况下,明确地设置它将覆盖您在样式中放置的任何内容。

答案 1 :(得分:1)

详细说明ascalonx的回答:

Josh Smith's博客复制:

  

有一套明确定义的规则   它由WPF内部使用   弄清楚DP的真正价值   是。这是一个简短的摘要   当使用时的优先权规则   解决DP的价值(来自   从最高到最低优先级):

     
      
  1. 物业系统强制
  2.   
  3. 动态动画或动画   保持行为
  4.   
  5. 本地值
  6.   
  7. TemplatedParent模板
  8.   
  9. 样式触发器
  10.   
  11. 模板触发器
  12.   
  13. 样式制定者
  14.   
  15. 主题风格
  16.   
  17. 继承
  18.   
  19. 依赖项的默认值    属性元数据
  20.   

因此,如果你明确设置了Header属性,(或者如果你认为你绑定了它),你就会遇到这个问题。