WPF - есть ли способ предотвратить выбор и активацию TreeViewItems при выборе родительского TreeViewItem? - PullRequest
1 голос
/ 06 января 2011

У меня есть шаблон управления для 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 Ответ

2 голосов
/ 06 января 2011

Отличный вопрос. Это связано с приоритетом значения свойства зависимости .

Это происходит потому, что дочерние элементы представления дерева никоим образом не переопределяют свойство 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, установленное триггером, который переопределит унаследованное свойство от выбранного родителя.

...