我在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的原因)。提前感谢您的帮助。