O WPF- Existe uma maneira de impedir que o TreeViewItems seja selecionado e ativado quando o paiRewIVEWIVEM do pai é selecionado?
-
26-09-2019 - |
Pergunta
Eu tenho um modelo de controle para TreeViewItems
e em vez de mostrar o normal FocusVisualStyle
eu tenho um MultiTrigger
configure assim:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="true"/>
</MultiTrigger.Conditions>
<Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>
No entanto, isso também causa o FontWeight
mudar para ousado quando um TreeViewItem's
O item pai está selecionado. Existe alguma maneira de impedir que isso aconteça?
Solução
Ótima pergunta. Tem a ver com precedência da propriedade da propriedade de dependência.
Isso está acontecendo porque os itens de visualização da árvore infantil não substituem a propriedade do peso -font de forma alguma, para que eles a herdem de seus pais visuais. O que você poderia fazer é adicionar outro gatilho normal para quando o ISSELECT é 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>
Agora, o Child TreeViewItem terá sua propriedade Fontweight definida por um gatilho que substituirá a propriedade herdada de seu pai selecionado.