【发布时间】:2019-05-22 11:02:09
【问题描述】:
我需要在运行时更改特定数据网格行的颜色
我在数据网格的 Loading Row 事件中设置行背景颜色
private void MessagesDataGrid_LoadingRow(objects , DataGridRowEventArgs e)
{
var v = e.Row.Item.ToString();
int i = e.Row.GetIndex();
if (IoStatusViewModel.HighlightSelected == true )
{
e.Row.Focusable = true;
e.Row.Background = Brushes.Red;
if (v.Contains("MCP :"))
{
DisplayLogs = IoStatusViewModel.ChangeMcpLog(v);
e.Row.Item = DisplayLogs;
}
}
else
{
if (v.Contains("MCP :"))
{
DisplayLogs = IoStatusViewModel.ChangeMcpLog(v);
e.Row.Item = DisplayLogs;
}
}
}
此代码在加载数据网格时工作正常,但经过一段时间后,数据网格中每一行的颜色开始变化,随着时间的推移,整个网格变为红色
【问题讨论】:
-
你有没有尝试在这个类中做一个字段(例如int_lastIndex),并且在MessagesDataGrid_LoadingRow中,在设置新行背景色为红色之前,先设置上一行索引(_lastIndex)背景色变成白色,还是变成红色之前的样子?
-
DataGridLoadingRow 事件将在您加载 DataGrid 中的项目时调用一次。根据 DataGrid 单元格的内容(基于集合的属性)更改 DataGrid Row 背景颜色,例如 Code var ds = e.Row.Item as TestEnableButton; if(ds.IsEnableButton) e.Row.Background = Brushes.Red;