Tipp der Woche
25.08.2022, 12:36 Uhr
WPF/C#/VB: Schneller Scrollen
Das Scrollen in gut gefüllten WPF-Listen kann ziemlich nervig sein. Doch ihr Tempo lässt sich ganz einfach beschleunigen.
Das Schlüsselwort zu mehr Tempo beim Scrollen in Listboxen ist VirtualizationMode.Recycling. Standardmäßig erstellt ein VirtualizingStackPanel einen Element-Container für jedes sichtbare Element und verwirft ihn, wenn er nicht mehr benötigt wird (zum Beispiel wenn das Element aus der Ansicht gescrollt wird). Enthält ein ItemsControl viele Elemente, kann der Prozess des Erstellens und Verwerfens von Elementcontainern die Leistung spürbar beeinflussen. Die Lösung: Wird VirtualizationMode auf Recycling gestellt, verwendet das VirtualizingStackPanel die Elementcontainer wieder, anstatt jedes Mal einen neuen zu erstellen.
Eingesetzt wird das Recycling so:
...
<StackPanel>
<ListBox x:Name="lb_LotsOfItems" Height="150"
VirtualizingStackPanel.VirtualizationMode="Recycling" />
</StackPanel>
...
' VB.NET
Class MainWindow
Private Sub MainWindow_Loaded(...) Handles Me.Loaded
Dim blLoi(9999) As String
For i = 0 To 9999
blLoi(i) = "Item-Nr. " & i.ToString()
Next
lb_LotsOfItems.ItemsSource = blLOI
...
In der Microsoft-Dokumentation finden Sie die Infos zum VirtualizingStackPanel auf dieser Seite. Dort ist auch das C#-Beispiel zu finden.