2016-06-09 8 views
1

Ich habe einen XamDataGrid, wo ich die Hintergrundfarbe einer Zelle ändern, wenn ihr Wert durch den Benutzer, wie dies geändert:Zellen in XamDataGrid zufällig ändernde Hintergrundfarbe

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

Jetzt das funktioniert und den Hintergrund Die Zellen, die verändert wurden, erhalten die Farbe, die sie haben sollen. Wenn ich jedoch in meiner Tabelle scrolle, passiert es manchmal, dass zufällige andere Zellen auch ihre Hintergrundfarbe in meine benutzerdefinierte Farbe ändern oder Zellen mit meiner Farbe ihre Hintergrundfarbe wieder in die Standardfarbe ändern.

Der obige Code wird nie aufgerufen, ich habe überprüft, indem Sie einen Haltepunkt setzen. Und die obigen Zeilen sind der einzige Ort in meinem Programm, wo ich die benutzerdefinierte Hintergrundfarbe eingestellt habe.

Ist das ein Aktualisierungsproblem? Muss ich mein Raster beim Scrollen aktualisieren?

Antwort

2

Ich lief das gleiche Problem mit der Zeile Selektor Checkbox zufällig nach dem anderen in anderen Zeilen während ich gescrollt. Dies ist ein Problem bei der Zellenvirtualisierung, da nicht alle Zeilen erstellt werden, bis tatsächlich in die Ansicht gescrollt und Zellen recycelt werden, wodurch der Hintergrund für eine Zelle verwendet wird, die nicht bearbeitet wurde.

I fixiert es durch das Element RecordContainerGenerationMode Zugabe:

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