我有一个名为Color的DataGrid。

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

DataGrid的ItemSource是一些带有MyColor属性的对象。
public class MyColor
{
    Color Background { get; set; }
    int Percentage { get; set; }
}

设置ItemSource时,列将自动填充Percentage的值。现在,我想将此列中每个单元格的背景设置为与MyColor.Color属性相对应的颜色。有没有办法使用绑定(bind)来做到这一点?就像是
Background="{Binding MyColor.Color}"
Color属性为html格式#XXXXXXXX(是否称为html格式?)。

最佳答案

您可以通过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

10-08 17:21