How to: Improve the Scrolling Performance of a ListBox

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. You can improve the performance of the ListBox when the user scrolls by setting the VirtualizingStackPanel.VirtualizationMode attached property to VirtualizationMode.Recycling.



The following example creates a ListBox and sets the VirtualizingStackPanel.VirtualizationMode attached property to VirtualizationMode.Recycling to improve performance during scrolling.



    <src:LotsOfItems x:Key="data"/>

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


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())
    End Sub
End Class