WPF- Y at-il un moyen d'arrêter TreeViewItems de devenir sélectionné et activé lorsque leur TreeViewItem parent est sélectionné?
-
26-09-2019 - |
Question
J'ai un modèle de contrôle pour TreeViewItems
et au lieu de montrer la normale FocusVisualStyle
j'ai un MultiTrigger
mis en place comme ceci:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="true"/>
</MultiTrigger.Conditions>
<Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>
Cependant, cela provoque aussi la FontWeight
changer en gras lorsqu'un élément parent TreeViewItem's
est sélectionné. Est-il possible que je peux empêcher que cela se passe?
La solution
Grande question. Il a à voir avec la propriété de dépendance .
Ceci se produit parce que les éléments de la vue de l'arbre des enfants ne remplacent pas la propriété FontWeight de quelque façon ils sont hériter de leur parent visuel. Ce que vous pouvez faire est d'ajouter un autre déclencheur normal quand IsSelected est faux.
<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>
Maintenant, l'enfant TreeViewItem aura sa propriété FontWeight fixé par un déclencheur qui remplacera la propriété héritée de son parent sélectionné.