2016-06-09 103 views
1

我有一个XamDataGrid,我更改单元格的背景颜色,如果它的价值已经被用户改变,这样的:细胞在XamDataGrid随机改变背景颜色

var result = touchpad.ShowDialog(); 
if (result.HasValue && result.Value) 
{ 
    if (valueHasChanged) 
    { 
     var presenter = CellValuePresenter.FromCell(activeCell); 
     presenter.Background = _changedCellBackgroundBrush; 
    } 
} 

现在这个工作和背景已更改的单元格获得我想要的颜色。但是,如果我在表格中滚动,偶尔其他单元格也会将其背景颜色更改为我的自定义颜色,或者使用我的颜色将单元格的背景颜色更改为默认颜色。

上面的代码永远不会被调用,我通过设置断点来检查。而上述行是我的程序中我设置自定义背景颜色的唯一位置。

这是刷新问题吗?滚动时是否需要刷新网格?

回答

2

我遇到了同样的问题,在我滚动时在其他行上随机选择行选择器复选框。这是一个单元虚拟化的问题,因为并非所有的行都被创建,直到实际滚动到视图中并且单元被回收,导致您的背景被用于未编辑的单元。

<igDP:XamDataGrid Name="SummaryDataGrid" DataSource="{Binding Summaries}" RecordContainerGenerationMode="LazyLoad" GroupByAreaLocation="None"> 

我通过添加RecordContainerGenerationMode元件固定它