DataGrid 更改背景颜色更改多行颜色

问题描述 投票:0回答:1

我正在尝试更改

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
颜色并得到相同的结果。

c# wpf colors datagrid
1个回答
0
投票

好吧,由于我不知道更改应该何时以及如何发生,所以我现在无法给您解决方案。不过我可以尝试解释一下这个问题。 基本上发生的情况是:是的,您更改了当前第一行的背景。但是,当您向下滚动时,第一行下方的行对象“消失”并移动位置并更改数据。我知道这听起来很奇怪,但为了帮助您理解,您可以尝试以下操作: 创建一个事件处理程序来检查您的行是否更改了数据

public void RowChangedData(object sender, DependencyPropertyChangedEventArgs e)
{
    //do some debugging, so you can read e
}

然后将该处理程序附加到您的行

firstRow.DataContextChanged += RowChangedData;

当您向下滚动时,您的断点应该被触发,显示您的行更改了其附加的项目。正如我所说,这并不是真正的解决方案,更多的是一种解释尝试。请注意,这只是我的理解方式。

© www.soinside.com 2019 - 2024. All rights reserved.