Ich habe eine ListBox
, die viele Zeilen von Vorlagen DB-Datensätze haben kann, einschließlich einer Image
, gebunden an eine ObservableCollection<MyItem>
. Manchmal könnte die Sammlung Tausende von Gegenständen enthalten.ListBox, VirtualizingStackPanel und Smooth Scrolling in WPF
Die Leistung ist großartig, aber das Scrollen ist das Standard-Jumpy-Verhalten. Ich möchte, dass es reibungslos scrollt, also habe ich ScrollViewer.CanContentScroll
deaktiviert.
Jetzt habe ich glatte Scrolling, aber die Leistung ist schrecklich: die Daten werden in einem separaten Thread abgerufen, und der Thread endet schnell, aber es dauert 10-20 Sekunden für die Ergebnisse in der ListBox
angezeigt werden. Ich nehme an, dass dies der Fall ist, weil das Deaktivieren von ScrollViewer.CanContentScroll
das zugrundeliegende VirtualizingStackPanel
zu einem normalen StackPanel
ändert, und so lädt es die gesamte Sammlung, bevor die Ergebnisse angezeigt werden.
Also meine Frage ist das: Wie behalte ich das reibungslose Scrollen ohne das VirtualizingStackPanel
Verhalten und die Leistung zu opfern?
http://stackoverflow.com/questions/1977929/wpf-listbox-with-a-listbox-ui-virtualization-and-scrolling/9875475 Virtua lizingPanel.ScrollUnit = "Pixel" – Guillaume
Sie können sowohl reibungsloses Scrollen als auch Virtualisierung verwenden, wenn Sie bereit sind, einen kleinen Hack zu verwenden. Für eine ähnliche Frage siehe [diese Antwort] (http://stackoverflow.com/questions/1977929/wpf-listbox-with-a-listbox-ui-virtualization-and-scrolling/9875475#9875475). –