Ich habe folgendes Szenario:
%Vor%Wenn ich nun DataGrid mit einer großen Datenmenge (etwa 10.000 Zeilen) binde, habe ich eine sehr langsame Performance. In der Tat bekomme ich OutOfmemory Ausnahme (und ich habe 8 GB Speicher)! Ich habe irgendwo gelesen, dass dies daran liegt, dass ScrollViewer die DataGrid-Virtualisierung (oder etwas Ähnliches) außer Kraft setzt, aber ich weiß nicht, wie ich das verhindern kann. Wenn ich den ScrollViewer entferne, ist das Problem gelöst! Die Daten werden in weniger als einer Sekunde geladen.
Ich möchte den ScrollViewer behalten (wegen anderer Kontrollen) und gute Leistung haben. Ist das möglich? Wenn nicht, gibt es eine andere Lösung - Workaround?
Eine gängige Problemumgehung für diese Art von Problemen besteht darin, ein unsichtbares "Dimensionierungselement" in derselben Zeile wie DataGrid
hinzuzufügen und dann DataGrid.Height
an ActualHeight
des Dimensionierungselements zu binden. Auf diese Weise wird Ihr DataGrid
immer die Höhe von RowDefinition
verbrauchen. Beispiel
Tags und Links wpf c# .net-4.0 performance xaml