Jak poprawić wydajność przesuwania ListBox

Jeśli element ListBox zawiera wiele elementów, odpowiedź interfejsu użytkownika może być niska, gdy użytkownik przewija ListBox kontrolkę za pomocą kółka myszy lub przeciąga kciuk paska przewijania. Wydajność funkcji można poprawić ListBox , gdy użytkownik przewija się, ustawiając dołączoną VirtualizingStackPanel.VirtualizationMode właściwość na VirtualizationMode.Recyclingwartość .

Przykład

opis

Poniższy przykład tworzy właściwość i ustawia dołączoną ListBoxVirtualizingStackPanel.VirtualizationMode właściwość w celu VirtualizationMode.Recycling zwiększenia wydajności podczas przewijania.

Kod

<StackPanel>

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

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

</StackPanel>

W poniższym przykładzie przedstawiono dane używane w poprzednim przykładzie.

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