使用绑定的 WPF DataGrid 单元格背景

发布于 2024-12-10 23:43:12 字数 587 浏览 0 评论 0原文

我有一个名为 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 属性相对应的颜色。有没有办法使用绑定来做到这一点? 像 Color 属性这样的东西

Background="{Binding MyColor.Color}"

是 html 格式#XXXXXXXX(这叫 html 格式吗?)。

I have a DataGrid with column named Color.

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

The ItemSource of DataGrid is some object with MyColor property inside.

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

When ItemSource is set column auto-fills with values of Percentage. Now I'd like to set background of each cell in this column to color corresponding to MyColor.Color property. Is there a way to do it using binding? Something like

Background="{Binding MyColor.Color}"

Color property is in html format #XXXXXXXX (is it called html format?).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

茶底世界 2024-12-17 23:43:12

您可以通过 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 类以具有类型为 BrushBackground 属性>,而不是颜色。或者您可以使用转换器将 Color 转换为 SolidColorBrush

You can set it via CellStyle:

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

Also you have to change your MyColor class to have a Background property with type Brush, not Color. Or you can use a converter to convert Color into SolidColorBrush.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文