valor una net formato filas fila condicional como columna colorear color celdas celda cambiar c# wpf xaml datagrid background-color

c# - una - ¿Cómo cambio programáticamente el color de fila de la cuadrícula de datos en WPF?



datagridview color row c# (1)

Me preguntaba si esto es posible. Tengo esta cuadrícula de datos contiene 3 columnas y 2 filas. Lo que quiero es cambiar el fondo de la columna URL en mi cuadrícula de datos de acuerdo con los datos que ingreso.

Aquí hay una muestra de mi código xaml:

<DataGrid x:Name="mylistview" BorderBrush="#FF373737" Background="Black" VerticalGridLinesBrush="#FF232323" HorizontalGridLinesBrush="#FF212121"> <DataGrid.Columns> <DataGridTextColumn Header="URL" Foreground="{Binding rowColor}" Binding="{Binding url}"/> <DataGridTextColumn Header="Version" Foreground="White" Binding="{Binding version}"/> <DataGridTextColumn Header="Valid" Foreground="White" Binding="{Binding valid}"/> </DataGrid.Columns> </DataGrid>

Mi clase solía llenar la cuadrícula de datos con filas:

public class myData { public string url {get; set;} public string version{get; set;} public string valid{get; set;} //this should be the value that changes the bg color public string rowColor{ get; set; } }

Y aquí está mi manera de agregar filas al control:

myData data1 = new myData(); data1.url = "http://google.com"; data1.valid = "yes"; data1.version = "1"; data1.rowColor = "#FF000000"; this.mylistview.Items.Add(data1); data1.url = "http://yahoo.com"; data1.valid = "no"; data1.version = "1"; data1.rowColor = "#000000FF"; this.mylistview.Items.Add(data1);

Tengo dos elementos Cada fila debe tener su propio color. El primero debe ser rojo y el segundo debe ser azul. Realmente no sé cómo hacer que el control use el valor de rowColor.

¿Qué debo hacer para que esto funcione?


Su rowColor no debe devolver una cadena (yo cambiaría el nombre a RowColor ya que es público), simplemente devuelva los pinceles de color reales en su lugar. (Tus colores están equivocados por cierto, el primero es negro opaco y el segundo es azul transparente)

p.ej

public Brush rowColor { get; set; }

data1.rowColor = Brushes.Red; data2.rowColor = Brushes.Blue;

Si realmente necesita analizar desde cadena, podría usar un convertidor de valor o la conversión estándar que se usa al analizar Xaml.

Además de eso, no estoy seguro de si el enlace de esas propiedades al Foreground de la columna funcionará.