WPF Datagrid具有可变数量的列并根据值更改背景颜色

时间:2010-10-09 15:45:31

标签: c# .net wpf datagrid

我正在尝试制作一个代表超过一个月预订的网格(excel风格)。

为此,我使用了WPF Datagrid并在C#代码中定义了我的列:

for (int i = 0; i < noOfDaysInMonth; i++)
{
        DataGridTextColumn tmpColumn = new DataGridTextColumn
        {
               Header = (i + 1).ToString(),
               Binding = new Binding("CellStrings[" + i + "]"),
        };

overviewBookingsDataGrid.Columns.Add(tmpColumn); 

现在这很好用。我得到的问题是我不知道如何设置每个单元格的背景颜色,具体取决于插槽是完全预订,部分预订还是空。 我发现的所有示例都在XAML中,并将其定义为与列相关联,我不知道转换为C#。

1 个答案:

答案 0 :(得分:0)

您需要在XAML中定义datagridcell样式。根据单元格的Tag属性设置一些触发器。例如,如果它是“绿色”,则将您的单元格颜色为绿色。

填充数据网格后,您可以在代码中遍历表格,获取每个所需项目的datagridcell,将单元格的标记设置为正确的值,样式触发器将为您着色单元格(如果您想要清除背景颜色,将Tag设置回null。或者,如果您想避免使用XAML,可以直接设置单元格背景。

网上有很多例子如何检索给定项目的datagridcell,但我会给出一个警告 - 因为默认情况下wpf数据网格是虚拟化的,你需要将项目滚动到视图中并且可以在项目的datagridrow上调用UpdateLayout(),然后才能安全地访问给定数据块的datagridcell。