WPF- ¿Hay una manera de detener TreeViewItems se convierta seleccionada y activada cuando se selecciona sus padres TreeViewItem?
-
26-09-2019 - |
Pregunta
Tengo una plantilla de control para TreeViewItems
y en lugar de mostrar la FocusVisualStyle
normal, yo he puesto un MultiTrigger
de esta manera:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="true"/>
</MultiTrigger.Conditions>
<Setter Property="FontWeight" Value="Bold"/>
</MultiTrigger>
Sin embargo, esto también hace que el FontWeight
para cambiar a negrita cuando se selecciona un elemento TreeViewItem's
padres. ¿Hay alguna manera de evitar que eso suceda?
Solución
Muy buena pregunta. Tiene que ver con la dependencia valor de la propiedad precedencia .
Esto está ocurriendo porque la vista elementos del árbol niño no anulan la propiedad FontWeight de ninguna manera por lo que están heredando desde su matriz visual. Lo que podría hacer es añadir otro factor desencadenante normal que cuando IsSelected es 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>
Ahora el niño TreeViewItem tendrá su conjunto de propiedades FontWeight por un gatillo que reemplazar la propiedad heredada de su padre seleccionado.