WPF- ¿Hay una manera de detener TreeViewItems se convierta seleccionada y activada cuando se selecciona sus padres TreeViewItem?

StackOverflow https://stackoverflow.com/questions/4612142

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top