Verbessern Sie die WPF DataGrid-Leistung
In meinem .NET 3.5
WPF
Anwendung, ich habe eine WPF
DataGrid
, die aufgefüllt wird mit 500 Spalten und 50 Zeilen.
Die performance der App ist sehr sehr schlecht in scrollen, oder wenn ich DataGrid.Items.Refresh()
oder Zeilen auswählen.
Eigentlich App wird etwa 20 Sekunden auf Update-Layout. Layout_Updated()
Ereignis wird ausgelöst, nach 20 Sek.
Wenn ich reduzieren die Spalten an, die 50 oder weniger, die App wird sehr schnell reagiert. Wie pro meine Befunde Leistung ist direkt um die Spalte count.
Wie verbessere ich die DataGrid
Leistung?
Kommentar zu dem Problem
Ein Grid mit mehr als 10 Spalten möglicherweise nicht eine gute Idee sein. Aber Bedenken Sie
Benutzerdefiniertes Paging
@Boomer Wirklich? JE gesehen habe einem forex grid?
@WPFK Haben Sie überlegt, das Dritte Gitter, das für die Leistung optimiert?
Ich brauche zu haben, die viele Spalten (500), das ist meine Anforderung. @Boomer - Bad-Design bedeutet, was nach Ihnen?
Ich weiß nicht, was forex ist, aber ich glaube nicht, dass jeder vernünftige Mensch wird jemals die scroll-thru 500 Spalten von Daten.
InformationsquelleAutor der Frage Kishor | 2012-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar Optionen, die Sie aktivieren können, um Ihnen helfen, auf Ihre DataGrid Objekt
Diese beiden sind die wichtigsten, die ich denke, könnte helfen. Als Nächstes versuchen Sie, Ihre verbindliche async
Und zu guter Letzt, ich habe gehört, dass die Einstellung einer maximalen Höhe und Breite kann sogar helfen, wenn Sie es über den max-Bildschirm-Größe, aber ich habe nicht bemerkt einen Unterschied, mich (den Anspruch hatte zu tun mit auto Größe Messen)
Auch nie
DataGrid
imScrollViewer
, weil Sie im wesentlichen verlieren Virtualisierung. Lassen Sie mich wissen, ob das hilft!InformationsquelleAutor der Antwort Alan
Prüfen Sie, ob diese Eigenschaft
ScrollViewer.CanContentScroll
setFalse
.Das einstellen dieser Eigenschaft auf false deaktiviert die virtualization in einer Weise verschlechtern die Leistung Ihres Daten-grid. Für mehr Klarheit, beziehen sich diese CanContentScroll
InformationsquelleAutor der Antwort Rajat Ghalni
IsAsync=True}" wird schneller nach der Verwendung dieser Anweisung, die Anwendung wird eine Vielzahl von Datensätzen in kurzer Zeit, bei mir hat es geklappt...
InformationsquelleAutor der Antwort Vinayaga Raj
Vielleicht versuchen Sie, diese anstelle des Ladens alle 50 Zeilen auf einmal
http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization
InformationsquelleAutor der Antwort Constanta