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 aSolidColorBrush
a 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
BorderBrush
permanece azul, si molesta a alguien, simplemente agregue otroSetter
elemento, que establece laBorderBrush
propiedad de dependencia con el mismo color (valor) que elBackground
propio.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
Style
también funcionará para otros elementos de colección comoListBoxItem
s (si reemplazaTargetType="{x:Type DataGridRow}"
con,TargetType="{x:Type ListBoxItem}"
por ejemplo).fuente
Color
propiedad del terceroSolidColorbrush
en mi ejemplo al color que quieras. El uso de esta declaración es en realidad establecer el color delSolidColorbrush
queSystemColors.HighlightTextBrushKey
utiliza. Sin embargo, tenga cuidado de no haber configurado elForeground
color en otroStyle
lugar, ya que esto puede anular la configuración de loResources
anterior.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