2011-10-21 24 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形式と呼ばれている?)html形式の#XXXXXXXXです。

答えて

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> 

はまた、あなたがタイプBrush、ないColorBackground性質を持っているあなたのMyColorクラスを変更する必要があります。または、コンバータを使用してColorSolidColorBrushに変換することもできます。

+0

私はSolidColorBrushへの変換入力を管理しましたが、問題があります。私は、アプリケーションの残りの部分のためにDispatcherを使用してDataSourceにItemSourceを割り当て、XAMLコードを追加すると「DependencyObjectと同じスレッド上にDependencySourceを作成する必要があります」というエラーが表示されます –

関連する問題