Procedura: migliorare le prestazioni di scorrimento di un controllo ListBoxHow to: Improve the Scrolling Performance of a ListBox

Se un ListBox contiene molti elementi, la risposta dell'interfaccia utente può essere lenta quando un utente scorre il ListBox usando la rotellina del mouse o trascinando il cursore di una barra di scorrimento.If a ListBox contains many items, the user interface response can be slow when a user scrolls the ListBox by using the mouse wheel or dragging the thumb of a scrollbar. È possibile migliorare le prestazioni del ListBox quando l'utente scorre impostando il VirtualizingStackPanel.VirtualizationMode proprietà associata VirtualizationMode.Recycling.You can improve the performance of the ListBox when the user scrolls by setting the VirtualizingStackPanel.VirtualizationMode attached property to VirtualizationMode.Recycling.

EsempioExample

DescrizioneDescription

Nell'esempio seguente viene creato un ListBox e imposta il VirtualizingStackPanel.VirtualizationMode proprietà associata VirtualizationMode.Recycling per migliorare le prestazioni durante lo scorrimento.The following example creates a ListBox and sets the VirtualizingStackPanel.VirtualizationMode attached property to VirtualizationMode.Recycling to improve performance during scrolling.

CodiceCode

<StackPanel>

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

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

</StackPanel>

Nell'esempio seguente mostra i dati che utilizza l'esempio precedente.The following example shows the data that the previous example uses.

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