Comment : améliorer les performances de défilement d'un contrôle ListBox

Si un ListBox contient de nombreux éléments, la réponse de l'interface utilisateur risque d'être lente lorsqu'un utilisateur fait défiler le ListBox à l'aide de la roulette de la souris ou en faisant glisser le curseur d'une barre de défilement. Vous pouvez améliorer les performances de ListBox lorsque l'utilisateur effectue un défilement en affectant à la propriété jointe VirtualizingStackPanel.VirtualizationMode la valeur Recycling.

Exemple

Description

L'exemple suivant crée un ListBox et affecte à VirtualizingStackPanel.VirtualizationMode la valeur Recycling pour améliorer les performances de défilement.

Code

<StackPanel>

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

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

</StackPanel>

L'exemple suivant présente les données utilisées dans l'exemple précédent.

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
public class LotsOfItems : ObservableCollection<String>
{
    public LotsOfItems()
    {
        for (int i = 0; i < 1000; ++i)
        {
            Add("item " + i.ToString());
        }
    }
}