WPF - есть ли способ остановить дерево, чтобы стать выбранным и активирован, когда выбран их родитель TreeViewItem?
-
26-09-2019 - |
Вопрос
У меня есть шаблон управления для 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, установленный спусковым крючком, который переопределяет унаследованное свойство от его выбранного родителя.