Partager via


Guide pratique pour améliorer les performances de défilement d’un ListBox

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

Exemple :

Descriptif

L’exemple suivant crée une ListBox et définit la propriété attachée VirtualizingStackPanel.VirtualizationMode sur VirtualizationMode.Recycling afin d'améliorer les performances lors du 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 montre les données que l’exemple précédent utilise.

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