我正在尝试更改
Row
或我的 Cells
的 DataGrid
的背景颜色,对我来说,我得到了一些奇怪的变化。
当我更改 X Row
或 Cell
的颜色时,我的列表中的另一个 Row
也会更改。
除非我向下滚动到它们,否则 Rows
的更改不是 Visible
。
这是我的硬编码代码示例。
DataGridRow? firstRow = sDataGrid.ItemContainerGenerator.ContainerFromItem(sDataGrid.Items[i]) as DataGridRow;
if( firstRow != null )
{
DataGridCell? firstColumnInFirstRow = sDataGrid.Columns[0].GetCellContent(firstRow).Parent as DataGridCell;
if (firstColumnInFirstRow != null)
{
firstColumnInFirstRow.Background = Brushes.Green;
//firstRow.Background = Brushes.Green;
}
}
这是
DataGrid
的图像
我尝试更改
Row
和 Cell
颜色并得到相同的结果。
好吧,由于我不知道更改应该何时以及如何发生,所以我现在无法给您解决方案。不过我可以尝试解释一下这个问题。 基本上发生的情况是:是的,您更改了当前第一行的背景。但是,当您向下滚动时,第一行下方的行对象“消失”并移动位置并更改数据。我知道这听起来很奇怪,但为了帮助您理解,您可以尝试以下操作: 创建一个事件处理程序来检查您的行是否更改了数据
public void RowChangedData(object sender, DependencyPropertyChangedEventArgs e)
{
//do some debugging, so you can read e
}
然后将该处理程序附加到您的行
firstRow.DataContextChanged += RowChangedData;
当您向下滚动时,您的断点应该被触发,显示您的行更改了其附加的项目。正如我所说,这并不是真正的解决方案,更多的是一种解释尝试。请注意,这只是我的理解方式。