WPF TreeView Resaltar fila al pasar el mouse

Actualmente, al pasar el cursor sobre un encabezado en TreeView, se resaltará el encabezado. Me gustaría pasar el cursor sobre cualquier parte de la fila en TreeView para resaltar la fila completa (al igual que lo hace el explorador de Windows). ¿Alguien podría dar un ejemplo de cómo hacer eso?

enter image description here

preguntado el 03 de mayo de 12 a las 15:05

1 Respuestas

Necesitas cambiar el ControlTemplate para TreeViewItem para ser en realidad todo el ancho del control.

Hay una discusión sobre este problema, junto con una solución, aquí:

http://leecampbell.blogspot.com/2009/01/horizontal-stretch-on-treeviewitems.html

Aquí hay otra respuesta larga, sin la discusión:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b04f73e2-0b10-4d97-a6da-64df2e30c21d/

Así que quise decir que esos ejemplos fueran guías. Si toma exactamente el mismo código que está en el segundo enlace anterior (de los foros de MSDN) y simplemente agrega esto:

<Trigger Property="IsMouseOver" Value="True">
    <Setter Property="Background" TargetName="Bd"
            Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
</Trigger>

de las personas acusadas injustamente llamadas ControlTemplate Verás que obtienes el color de resaltado al pasar el mouse. Obviamente, deberá ajustar el color y otras cosas, pero eso es lo que deberá hacer: modificar el ControlTemplate de los TreeViewItem para que ocupe todo el ancho y añadir un Trigger por IsMouseOver.

contestado el 03 de mayo de 12 a las 20:05

Ese ejemplo solo hace que el encabezado sea más grande y solo resalta el encabezado en la selección. Quiero que se resalte toda la fila (incluido el botón de expansión y el espacio en blanco anterior) y quiero que se resalte al pasar el mouse, no al seleccionar. - krisviaje

Actualicé mi respuesta para proporcionar más información. No es exactamente lo que estás pidiendo (tendrás que modificarlo), pero debería ponerte en marcha. - Tim

El enlace de lee campbell y toda la discusión es solo para estirar el resaltado completamente hacia la derecha, no se estira hacia la izquierda. - usuario317033

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.