WPF-有没有办法阻止TreeViewItems在选择父TreeViewItem时被选中并激活?

时间:2011-01-06 05:49:26

标签: wpf treeview triggers controltemplate treeviewitem

我有一个TreeViewItems的控制模板,而不是显示正常的FocusVisualStyle我设置了MultiTrigger这样的设置:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsSelected" Value="true"/>
        <Condition Property="IsSelectionActive" Value="true"/>
    </MultiTrigger.Conditions>
    <Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>

但是,当选择FontWeight父项时,这也会导致TreeViewItem's更改为粗体。有什么方法可以阻止这种情况发生吗?

1 个答案:

答案 0 :(得分:2)

好问题。它与dependency property value precedence有关。

这种情况正在发生,因为子树视图项不以任何方式覆盖FontWeight属性,因此它们从可视父级继承它。当IsSelected为false时,你可以做的是添加另一个普通触发器。

<Trigger Property="IsSelected" Value="false">
    <Setter Property="FontWeight" Value="Normal" />
</Trigger>
<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsSelected" Value="true"/>
        <Condition Property="IsSelectionActive" Value="true"/>
    </MultiTrigger.Conditions>
    <Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>

现在,子TreeViewItem将通过触发器设置其FontWeight属性,该触发器将覆盖其所选父级的继承属性。