WPF- Esiste un modo per fermare TreeViewItems da diventare selezionato e attivato quando è selezionato il genitore TreeViewItem?
-
26-09-2019 - |
Domanda
Ho un modello di controllo per TreeViewItems
e invece di mostrare il FocusVisualStyle
normale che ho un MultiTrigger
impostato in questo modo:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="true"/>
</MultiTrigger.Conditions>
<Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>
Tuttavia, questo fa sì che anche la FontWeight
di cambiare per grassetto quando viene selezionata una voce TreeViewItem's
genitore. C'è un modo per impedire che accada?
Soluzione
Grande questione. Ha a che fare con la dipendenza valore della proprietà di precedenza .
Questo accade perché le voci vista albero bambino non sostituiscono la proprietà FontWeight in alcun modo in modo che siano ereditando dal loro padre visuale. Che cosa si potrebbe fare è aggiungere un altro normale trigger per quando IsSelected è falso.
<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>
Ora il bambino TreeViewItem avrà il suo insieme di proprietà FontWeight da un trigger che sostituirà la proprietà ereditata dal suo genitore selezionato.