El color de fondo predeterminado de una fila seleccionada en DataGrid es tan oscuro que no puedo leerlo. ¿Hay alguna forma de anularlo?
Probé esto
<dg:DataGrid.RowStyle>
<Style TargetType="{x:Type dg:DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="Gainsboro" />
</Trigger>
</Style.Triggers>
</Style>
</dg:DataGrid.RowStyle>
Pero aún nada ...

Respuestas:
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, solo agregue esto a su
DataGrid. Puede cambiarlo de aSolidColorBrusha cualquier otro pincel, como un degradado lineal.fuente
<DataGrid>ItemsSource="{Binding Path=MySelector}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"la fila es solo LightGrey. ¿Existe también un SystemColors? ´SystemColors.ControlBrushKey.Entendido. Agregue lo siguiente dentro de la sección DataGrid.Resources:
fuente
BorderBrushpermanece azul, si molesta a alguien, simplemente agregue otroSetterelemento, que establece laBorderBrushpropiedad de dependencia con el mismo color (valor) que elBackgroundpropio.Como extensión de la respuesta de @Seb Kade, puede controlar completamente los colores de las filas seleccionadas y no seleccionadas utilizando lo siguiente
Style:Por supuesto, puede ingresar los colores que prefiera. Esto
Styletambién funcionará para otros elementos de colección comoListBoxItems (si reemplazaTargetType="{x:Type DataGridRow}"con,TargetType="{x:Type ListBoxItem}"por ejemplo).fuente
Colorpropiedad del terceroSolidColorbrushen mi ejemplo al color que quieras. El uso de esta declaración es en realidad establecer el color delSolidColorbrushqueSystemColors.HighlightTextBrushKeyutiliza. Sin embargo, tenga cuidado de no haber configurado elForegroundcolor en otroStylelugar, ya que esto puede anular la configuración de loResourcesanterior.SystemColors.InactiveSelectionHighlightBrushKey, o la fila se resaltará cuando la cuadrícula pierda el focoTuve 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 un 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 el CellStyle anuló el RowStyle que estaba configurando. Curiosamente, porque CellStyle ni siquiera estaba configurando el color de fondo, que en su lugar era bing establecido por las propiedades RowBackground y AlternateRowBackground. Sin embargo, intentar establecer el color de fondo de la fila seleccionada no funcionó cuando hice esto:
y funcionó cuando moví el estilo deseado para la fila seleccionada fuera del estilo de fila y al estilo de celda, así:
Solo publica esto en caso de que alguien tenga el mismo problema.
fuente
El activador predeterminado IsSelected cambia 3 propiedades, Fondo, Primer plano y Borde de borde. Si desea cambiar el borde y el fondo, simplemente inclúyalo en su estilo.
fuente
Algunas de las razones por las que experimenté el evento de fila seleccionada no funcionan
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 usando el enlace RelativeSource:
fuente
Intenté ControlBrushKey pero no funcionó para filas no seleccionadas. El fondo de la fila no seleccionada seguía siendo blanco. Pero me las he arreglado para descubrir que tengo que anular el estilo de fila.
fuente
Pasé la mayor parte del día jugando con este problema. Resultó que la propiedad RowBackground en DataGrid, que había configurado, anulaba todos los intentos de cambiarla. Tan pronto como lo eliminé, todo funcionó. (Por cierto, lo mismo ocurre con el primer plano establecido en DataGridTextColumn).
fuente