1

我有一个控制模板,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有什么办法可以阻止这种情况发生吗?

4

1 回答 1

2

好问题。它与依赖属性值优先级有关。

发生这种情况是因为子树视图项不会以任何方式覆盖 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 属性,该触发器将覆盖从其选定父级继承的属性。

于 2011-01-06T05:54:48.053 回答