2011-01-06 7 views
1

Ich habe eine Kontrolle Vorlage für TreeViewItems und statt die normalen FocusVisualStyle zeigt habe ich ein MultiTrigger wie diese ein:WPF- Gibt es eine Möglichkeit zu verhindern, dass TreeViewItems ausgewählt und aktiviert wird, wenn das übergeordnete TreeViewItem ausgewählt ist?

<MultiTrigger> 
      <MultiTrigger.Conditions> 
       <Condition Property="IsSelected" Value="true"/> 
       <Condition Property="IsSelectionActive" Value="true"/> 
      </MultiTrigger.Conditions> 
      <Setter Property="FontWeight" Value="Bold"/> 
     </MultiTrigger> 

jedoch dies auch die FontWeight bewirkt, fett zu ändern, wenn ein TreeViewItem's übergeordnetes Element ausgewählt ist. Kann ich das irgendwie verhindern?

Antwort

2

Große Frage. Es hat mit dependency property value precedence zu tun.

Dies passiert, weil die Elemente der untergeordneten Strukturansicht die FontWeight-Eigenschaft in keiner Weise überschreiben, sodass sie von ihrem visuellen übergeordneten Element erben. Sie können einen weiteren normalen Trigger hinzufügen, 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> 

das Kind Jetzt wird TreeViewItem haben seine Eigenschaft Fontweight durch einen Trigger festlegen, die die geerbte Eigenschaft von seinem ausgewählten übergeordneten überschreiben.