2016-06-09 130 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元件固定它