2011-10-21 77 views
5

我有一個名爲Color的列的DataGrid。使用綁定WPF DataGrid單元格背景

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

數據網格的的ItemSource是一些對象,具有MyColor屬性內。

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

時的ItemSource設置柱,以Percentage值自動填充。現在我想將此列中每個單元格的背景設置爲對應於MyColor.Color屬性的顏色。有沒有辦法使用綁定來做到這一點?像

Background="{Binding MyColor.Color}" 

Color性質的東西是HTML格式#XXXXXXXX(叫html格式的?)。

回答

9

您可以通過CellStyle設置:

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

而且你必須改變你的MyColor類有Background物業類型Brush,不Color。或者您可以使用轉換器將Color轉換爲SolidColorBrush

+0

好的,我管理轉換輸入到SolidColorBrush,但有一個問題。我使用Dispatcher將ItemSource分配給DataGrid,因爲我的應用程序的其餘部分,當我將XAML代碼添加到我的應用程序時,它彈出錯誤「必須在DependencyObject的同一線程上創建DependencySource」 –

相關問題