Compartir a través de


Cómo: Mejorar el rendimiento del desplazamiento de un control ListBox

Si ListBox contiene muchos elementos, la respuesta de la interfaz de usuario puede ser lenta cuando un usuario desplaza el control ListBox utilizando la rueda del mouse o arrastrando el cuadro de una barra de desplazamiento. Puede mejorar el rendimiento de ListBox cuando el usuario se desplaza estableciendo la propiedad adjunta VirtualizingStackPanel.VirtualizationMode en Recycling.

Ejemplo

Descripción

En el ejemplo siguiente se crea un control ListBox y se establece la propiedad VirtualizingStackPanel.VirtualizationMode en Recycling para mejorar el rendimiento durante los desplazamientos.

Código

<StackPanel>

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

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

</StackPanel>

En el ejemplo siguiente se muestran los datos que se utilizan en el ejemplo anterior.

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());
        }
    }
}