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