我有一个 XamDataGrid,如果用户更改了单元格的值,我会在其中更改单元格的背景颜色,如下所示:
var result = touchpad.ShowDialog();
if (result.HasValue && result.Value)
{
if (valueHasChanged)
{
var presenter = CellValuePresenter.FromCell(activeCell);
presenter.Background = _changedCellBackgroundBrush;
}
}
现在这有效,并且已更改的单元格的背景会获得我想要的颜色。但是,如果我在表格中滚动,有时会发生随机其他单元格也会将其背景颜色更改为我的自定义颜色,或者具有我颜色的单元格的背景颜色更改回默认颜色。
上面的代码从未被调用,我通过设置断点进行了检查。上面的行是我的程序中唯一设置自定义背景颜色的地方。
这是刷新问题吗?滚动时需要刷新网格吗?
当我滚动时,我遇到了同样的问题,在其他行上随机选择了行选择器复选框。 这是单元格虚拟化的一个问题,因为并非所有行都是在实际滚动到视图中并回收单元格之前创建的,从而导致您的背景用于未编辑的单元格。
我通过添加 RecordContainerGenerationMode 元素来修复它:
<igDP:XamDataGrid Name="SummaryDataGrid" DataSource="{Binding Summaries}" RecordContainerGenerationMode="LazyLoad" GroupByAreaLocation="None">