【问题标题】:WPF individual cell colors in DataGrid using DataTable使用 DataTable 在 DataGrid 中的 WPF 单个单元格颜色
【发布时间】:2011-06-27 19:53:02
【问题描述】:

我在 WPF 中有一个 DataGrid。 DataGrid 绑定到 DataTable 中的数据。 DataGrid 有 ItemsSource="{Binding}"。没有设置 DataGridTextColumn 条目。 DataTable 列/行是通过数据库表动态确定的。

在下面的示例中,数据库列名被放入一个列表中,并设置了 DataTable,因此第一列中有一个名称,后面是一系列整数值:

DataTable theDataTable= new DataTable();
theDataTable.Columns.Add("Name", typeof(string));
for(int i = 0; i < columnNameList.Count ; i++)
    theDataTable.Columns.Add(columnNameList[i], typeof(int));

接下来将 DataGrid 关联(绑定)到 DataTable

theDataGrid.DataContext = theDataTable;

接下来在 DataTable 中设置行。同样,行数由数据库中的用户确定。数据库调用后,用户名被放入一个列表中。行值默认为零。

for (int i = 0; i < usersNames.Count ; i++)
{
    DataRow newDataRow = theTradersDataTable.NewRow();
    newDataRow["Name"] = usersNames[i];

    for(int j = 0; i < columnNameList.Count ; j++)
    {
        newDataRow[columnNameList[j]] = 0;
    }
    theDataTable.Rows.Add(newDataRow);
 }

在 DataGrid 设置之后,我连接到一个 API,该 API 提供带有用户信息更新的回调。更新后,我确定应该更新底层 DataTable 的行和列,这反过来又更新 DataGrid。这一切都很好。

//inside some API callback
theDataTable.Rows[rowNumber][columnNumber] = someDataSentInViaAPI;

最后的问题是:如何根据该单元格中的值更新 DataGrid 的特定单元格的颜色。在从我接收数据的 API 回调时,单元格不断更新。所以我想在更新到来时更新单元格的颜色。

我没有嫁给我的设计。我不想根据我已经完成的代码来拟合这个模型。我几乎可以接受任何想法,但我不希望对列名进行硬编码。我还希望有一种方法可以让我检查单元格的颜色,然后仅在必要时重新绘制(出于速度/CPU 原因)。提前感谢您的所有帮助。

【问题讨论】:

  • 似乎没有很好的解决方案。在 winforms 中如此简单,在 WPF 中几乎不可能而且非常丑陋
  • 我有同样的问题,我必须在数据网格中显示不同的数据表,然后我需要根据 List() 将颜色更改为 X 个单元格,其中 X_Y 类表示数据网格中的一行和一列。我找不到解决方案,你做到了吗?

标签: c# wpf datagrid


【解决方案1】:

查看数据触发器。下面Stack Overflow question可以举个例子。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2012-04-30
    • 2018-09-26
    • 2011-09-04
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多