【问题标题】:WPF Datagrid with variable number of columns AND change background color depending on value具有可变列数的 WPF Datagrid 并根据值更改背景颜色
【发布时间】:2010-10-09 15:45:31
【问题描述】:

我正在尝试制作一个表示一个月内预订的网格(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#。

【问题讨论】:

    标签: c# .net wpf datagrid


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 2013-03-16
      相关资源
      最近更新 更多