WPF- Gibt es eine Möglichkeit TreeViewItems um zu verhindern, immer ausgewählt und aktiviert, wenn ihre Eltern TreeViewItem ausgewählt ist?
-
26-09-2019 - |
Frage
Ich habe eine Kontrolle Vorlage für TreeViewItems
und stattdessen die normalen FocusVisualStyle
zeigt Ich habe eine MultiTrigger
wie folgt aufgebaut:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="true"/>
</MultiTrigger.Conditions>
<Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>
Doch auch dies bewirkt, dass die FontWeight
zu fett ändern, wenn ein TreeViewItem's
übergeordnetes Element ausgewählt ist. Gibt es eine Möglichkeit, die ich nicht passiert stoppen?
Lösung
Gute Frage. Es hat mit Abhängigkeitseigenschaft Wert Vorrang zu tun.
Dies geschieht, weil das Kind Baumansicht Elemente überschreiben nicht die Eigenschaft Fontweight in irgendeiner Weise, so dass sie es von ihren visuell Eltern erben. Was Sie tun können, ist eine andere normale Auslöser hinzu, wenn IsSelected falsch ist.
<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>
Jetzt das Kind TreeViewItem wird seine Eigenschaft Fontweight Set durch einen Trigger, die die geerbte Eigenschaft von seinem ausgewählten übergeordneten außer Kraft gesetzt werden.