繁体   English   中英

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

[英]WPF Datagrid with variable number of columns AND change background color depending on value

我试图做一个网格,代表一个月的预订(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中,并使用该列将其定义为togheter,但我不知道这会转换为C#。

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

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

网上有很多示例,如何检索给定项目的datagridcell,但我会提一个警告-由于wpf datagrid是默认虚拟化的,因此您需要将项目滚动到视图中并调用UpdateLayout ()在项目的datagridrow上,然后可以安全地访问给定datagridrow的datagridcell。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM