WPF - есть ли способ остановить дерево, чтобы стать выбранным и активирован, когда выбран их родитель TreeViewItem?

StackOverflow https://stackoverflow.com/questions/4612142

Вопрос

У меня есть шаблон управления для 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 родительский элемент выбран. Есть ли способ, которым я могу остановить это от происхождения?

Это было полезно?

Решение

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

Это происходит потому, что элементы вида дочернего дерева не переопределяют недвижимость на фондеве, чтобы они наследовали его от своего визуального родителя. То, что вы могли бы сделать, это добавить еще один нормальный триггер, когда Isselected является ложным.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top