2011-10-21 19 views
5

Mam DataGrid z kolumna o nazwie Kolor.Tło komórki DataFrid WPF przy użyciu wiązania

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

ItemSource z DataGrid jest jakiś przedmiot z MyColor mienia wewnątrz.

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

Gdy pozycja jest ustawiona, kolumna automatycznie wypełnia się wartościami Percentage. Teraz chciałbym ustawić tło każdej komórki w tej kolumnie na kolor odpowiadający właściwości MyColor.Color. Czy istnieje sposób, aby to zrobić za pomocą wiązania? Coś jak

Background="{Binding MyColor.Color}" 

Color nieruchomości jest w formacie HTML #XXXXXXXX (Nazywa formacie HTML?).

Odpowiedz

9

Można ustawić go poprzez CellStyle:

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

Również trzeba zmienić klasę MyColor mieć Background nieruchomość typu Brush nie Color. Możesz też użyć konwertera, aby przekonwertować Color na SolidColorBrush.

+0

OK, udało mi się przekonwertować dane wejściowe na SolidColorBrush, ale wystąpił problem. Przypisuję ItemSource do DataGrid używając Dispatchera z powodu reszty mojej aplikacji i kiedy dodałem twój kod XAML do mojego, wyskakuje błąd "Musi utworzyć DependencySource na tym samym wątku co DependencyObject" –

Powiązane problemy