Cambiar el color de fondo para el elemento de ListBox seleccionado

Este es mi XAML hasta ahora.

              Date:    Severity:               

El único problema es que el elemento seleccionado tiene un cuadro azul a la derecha. Supongo que hay una forma de cambiar el color de selección, pero no puedo encontrarlo.

Necesita usar ListBox.ItemContainerStyle .

ListBox.ItemTemplate especifica cómo se debe mostrar el contenido de un elemento. Pero WPF todavía envuelve cada elemento en un control ListBoxItem, que de forma predeterminada obtiene su fondo establecido en el color de resaltado del sistema, si está seleccionado. No puede evitar que WPF cree los controles ListBoxItem, pero puede personalizarlos, en su caso, para configurar el fondo para que siempre sea transparente o negro o lo que sea, y para hacerlo, use ItemContainerStyle.

La respuesta de juFo muestra una posible implementación, mediante el “secuestro” del recurso de pincel de fondo del sistema en el contexto del estilo del elemento; otra técnica, quizás más idiomática, es utilizar un Setter para la propiedad Background.

    

y

  

Simplemente anula el estilo de listboxitem (vea: TargetType es ListBoxItem)

O puede aplicar HighlightBrushKey directamente al ListBox. Setter Property = “Background” Value = “Transparent” NO funcionó. Pero tuve que configurar el primer plano en negro.

      

Tuve que configurar HighlightBrushKey y ControlBrushKey para que se diseñase correctamente. De lo contrario, mientras tenga foco, usará correctamente la tecla HighlightBrusKey transparente. Bt, si el control pierde el foco (mientras todavía está resaltado), entonces usa la tecla ControlBrush.

     

Espero que esto ayude a alguien.

Si la selección no es importante, es mejor usar un ItemsControl envuelto en un ScrollViewer. Esta combinación es más liviana que el Listbox (que en realidad se deriva de ItemsControl ya) y su uso eliminaría la necesidad de utilizar un hack barato para anular el comportamiento que ya está ausente de ItemsControl.

En los casos en que el comportamiento de selección ES realmente importante, obviamente esto no funcionará. Sin embargo, si desea cambiar el color del Fondo del elemento seleccionado de tal manera que no sea visible para el usuario, eso solo serviría para confundirlos. En los casos donde su intención es cambiar alguna otra característica para indicar que el elemento está seleccionado, algunas de las otras respuestas a esta pregunta pueden ser aún más relevantes.

Aquí hay un esquema de cómo debería verse el marcado:

      ...     

Tienes que crear una nueva plantilla para la selección de elementos como esta.

          
    

Este código funcionó como un encanto para mí. Gracias al cartel original.