我在 WPF 中有一个 DataGrid。 DataGrid 绑定(bind)到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 关联(绑定(bind))到 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。更新后,我确定应该更新底层 DataTable 的行和列,后者又更新了 DataGrid。这一切都很好。
//inside some API callback
theDataTable.Rows[rowNumber][columnNumber] = someDataSentInViaAPI;
最后是问题:如何根据单元格中的值更新 DataGrid 的特定单元格的颜色。从我接收数据的 API 回调后,单元格不断更新。所以我想在更新到来时更新单元格的颜色。
我没有嫁给我的设计。我不想根据我已经完成的代码使这个模型适合。我愿意接受大多数想法,但我不想对列名进行硬编码。我也更喜欢一种允许我检查单元格颜色然后仅在必要时重新绘制的方法(出于速度/CPU 原因)。预先感谢您提供的所有帮助。
最佳答案
研究数据触发器。以下Stack Overflow question可以举个例子。
关于c# - 使用 DataTable 的 DataGrid 中的 WPF 单个单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5007838/