WPF DataGrid将单元格背景颜色绑定到指定数据对象的属性

本文关键字:数据 对象 属性 绑定 DataGrid 单元格 背景 颜色 WPF | 更新日期: 2023-09-27 18:13:34

我有一个DataGrid,其中单元格分配给定义如下的自定义类:

public class DataGridVariableWrapper : DependencyObject
{
    public Variable TheVariable { get; set; }
    public Brush BackgroundColor
    {
        get { return (Brush)GetValue( BackgroundColorProperty ); }
        set { SetValue( BackgroundColorProperty, value ); }
    }
    public static readonly DependencyProperty BackgroundColorProperty = DependencyProperty.Register( "BackgroundColor", typeof( Brush ), typeof( DataGridVariableWrapper ), new UIPropertyMetadata( null ) );
    public DataGridVariableWrapper( Brush backgroundBrush, Variable theVariable )
    {
        this.BackgroundColor = backgroundBrush;
        this.TheVariable = theVariable;
    }
    public override string ToString()
    {
        return TheVariable.Value.ToString();
    }
}

我试图有DataGridCell背景绑定到这个数据包装类的BackgroundColor属性。我试过:

<DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="Background" Value="{Binding DataGridVariableWrapper.BackgroundColor}" />
    </Style>
</DataGrid.CellStyle>

但是背景颜色保持不变。我做错什么了吗?

WPF DataGrid将单元格背景颜色绑定到指定数据对象的属性

如果一个数据对象被分配给DataGridCell,您将在DataContext中找到它。这就是为什么在绑定中所要做的就是指定所需的属性。

<Style TargetType="DataGridCell">
    <Setter Property="Background" Value="{Binding BackgroundColor}" />
</Style>