¿Cómo puedo establecer el color de una fila seleccionada en DataGrid?

Esto parece obvio, pero no puedo ver cómo hacerlo.

El color de fondo predeterminado de una fila seleccionada en DataGrid es tan oscuro que no puedo leerlo. ¿Hay alguna forma de anularlo?

Intenté esto (modificado desde el enlace de Neverminds)

         

Pero aún nada …

La solución anterior dejó un borde azul alrededor de cada celda en mi caso.

Esta es la solución que funcionó para mí. Es muy simple, simplemente agregue esto a su DataGrid . Puede cambiarlo de un SolidColorBrush a cualquier otro pincel, como un degradado lineal.

    

Lo tengo. Agregue lo siguiente dentro de la sección DataGrid.Resources:

      

Como extensión de la respuesta de @Seb Kade, puede controlar completamente los colores de las filas seleccionadas y no seleccionadas utilizando el siguiente Style :

   

Por supuesto, puede ingresar los colores que prefiera. Este Style también funcionará para otros elementos de la colección como ListBoxItem s (si reemplaza TargetType="{x:Type DataGridRow}" con TargetType="{x:Type ListBoxItem}" por ejemplo).

Tuve este problema y casi me arranqué el pelo, y no pude encontrar la respuesta adecuada en la red. Estaba tratando de controlar el color de fondo de la fila seleccionada en WPF DataGrid. Simplemente no lo haría. En mi caso, la razón fue que también tenía un CellStyle en mi cuadrícula de datos, y CellStyle anuló el RowStyle I que estaba configurando. Curiosamente, porque CellStyle ni siquiera estaba configurando el color de fondo, que en su lugar fue establecido por las propiedades RowBackground y AlternateRowBackground. Sin embargo, intentar establecer el color de fondo de la fila seleccionada no funcionó en absoluto cuando hice esto:

    ...   ...         

y funcionó cuando moví el estilo deseado para la fila seleccionada fuera del estilo de fila y en el estilo de celda, así:

    ...   ...      

Solo publique esto en caso de que alguien tenga el mismo problema.

El desencadenante IsSelected predeterminado cambia 3 propiedades, Fondo, Primer plano y BorderBrush. Si desea cambiar el borde y el fondo, simplemente incluya esto en su disparador de estilo.

   

Algunos de los motivos por los que experimenté que el evento seleccionado de la fila no funcionaba

  1. El estilo está configurado para DataGridCell
  2. Uso de columnas Templated
  3. Trigger está configurado en DataGridRow

Esto es lo que me ayudó. Establecer el estilo para DataGridCell

   

Y como estaba usando una columna de plantilla con una etiqueta dentro, vinculé la propiedad de primer plano al primer plano del contenedor mediante el enlace de RelativeSource:

        

Intenté con ControlBrushKey pero no funcionó para las filas no seleccionadas. El fondo de la fila no seleccionada todavía era blanco. Pero me las he arreglado para descubrir que tengo que anular el estilo de fila.

            

Pasé la mayor parte del día jugando con este problema. Resultó que la Propiedad RowBackground en DataGrid, que había configurado, estaba anulando todos los bashs de cambiarla. Tan pronto como lo borré, todo funcionó. (Lo mismo ocurre con Foreground establecido en DataGridTextColumn, por cierto).