2011-10-21 7 views
5

Tengo un DataGrid con columna llamada Color.Fondo de celda WGT DataGrid utilizando el enlace

<DataGridTextColumn Header="Color" Binding="{Binding MyColor.Percentage}"/> 

El ItemSource de cuadrícula de datos es un objeto con MyColor propiedad dentro.

public class MyColor 
{ 
    Color Background { get; set; } 
    int Percentage { get; set; } 
} 

Cuando ItemSource se fija la columna auto-llena de valores de Percentage. Ahora me gustaría establecer el fondo de cada celda en esta columna para colorear correspondiente a la propiedad MyColor.Color. ¿Hay alguna manera de hacerlo usando el enlace? Algo así como

Background="{Binding MyColor.Color}" 

Color propiedad está en formato html #XXXXXXXX (Cómo se llama formato html?).

Respuesta

9

Se puede establecer a través de CellStyle:

<DataGridTextColumn Header="Color" Binding="{Binding MyColor.Percentage}"> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="Background" Value="{Binding MyColor.Background}" /> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 

También usted tiene que cambiar su clase MyColor tener una propiedad Background con el tipo Brush, no Color. O puede usar un convertidor para convertir Color en SolidColorBrush.

+0

Ok, logré la entrada de conversión a SolidColorBrush, pero hay un problema. Asigno ItemSource a DataGrid usando Dispatcher debido al resto de mi aplicación y cuando agregué su código XAML al mío, aparece el error "Debe crear DependencySource en el mismo subproceso que DependencyObject" –

Cuestiones relacionadas