Gewusst wie: Verbessern der Bildlaufleistung eines Listenfelds

Wenn ein ListBox viele Elemente enthält, reagiert die Benutzeroberfläche unter Umständen nur langsam, wenn ein Benutzer mit dem Mausrad oder mithilfe der Bildlaufleiste durch das ListBox scrollt. Sie können die Leistung für ein ListBox bei einem Scrollvorgang durch den Benutzer verbessern, indem Sie die angefügte Eigenschaft VirtualizingStackPanel.VirtualizationMode auf VirtualizationMode.Recycling festlegen.

Beispiel

Beschreibung

Im folgenden Beispiel wird ein ListBox erstellt und die angefügte Eigenschaft VirtualizingStackPanel.VirtualizationMode auf VirtualizationMode.Recycling festgelegt, um die Leistung beim Scrollen zu verbessern.

Code

<StackPanel>

  <StackPanel.Resources>
    <src:LotsOfItems x:Key="data"/>
  </StackPanel.Resources>

  <ListBox Height="150" ItemsSource="{StaticResource data}" 
             VirtualizingStackPanel.VirtualizationMode="Recycling" />

</StackPanel>

Das folgende Beispiel zeigt die Daten, die im vorherigen Beispiel verwendet wurden.

public class LotsOfItems : ObservableCollection<String>
{
    public LotsOfItems()
    {
        for (int i = 0; i < 1000; ++i)
        {
            Add("item " + i.ToString());
        }
    }
}
Public Class LotsOfItems
    Inherits ObservableCollection(Of String)
    Public Sub New()
        For i As Integer = 0 To 999
            Add("item " & i.ToString())
        Next
    End Sub
End Class