WPF- Gibt es eine Möglichkeit TreeViewItems um zu verhindern, immer ausgewählt und aktiviert, wenn ihre Eltern TreeViewItem ausgewählt ist?

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

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top