2010-10-09 32 views
0

我试图制作一个表示一个月(Excel风格)预订的网格。WPF Datagrid具有可变列数并根据值更改背景颜色

为此,我已经使用了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#。

回答

0

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

一旦你填充了你的数据网格,你可以遍历代码中的表格,为每个需要的项目获取datagridcell,将单元格的标签设置为合适的值,样式触发器将为你着色单元格(if你想清除背景颜色,将标签设置为空)。或者,如果您想避免使用XAML,则可以直接设置单元格背景。

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

相关问题