This documentation is archived and is not being maintained.

VirtualizingStackPanel Class

Updated: July 2008

Arranges and virtualizes content on a single line that is oriented either horizontally or vertically.

Namespace:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

Public Class VirtualizingStackPanel _
	Inherits VirtualizingPanel _
	Implements IScrollInfo
Dim instance As VirtualizingStackPanel

The standard layout system creates item containers and computes layout for each item associated with a list control. The word "virtualize" refers to a technique by which a subset of user interface (UI) elements are generated from a larger number of data items based on which items are visible on-screen. Generating many UI elements when only a few elements might be on the screen can adversely affect the performance of your application. The VirtualizingStackPanel calculates the number of visible items and works with the ItemContainerGenerator from an ItemsControl (such as ListBox or ListView) to create UI elements only for visible items.

Virtualization in a StackPanel only occurs when the items control contained in the panel creates its own item containers. You can ensure this happens by using data binding. In scenarios where item containers are created and added to the items control, a VirtualizingStackPanel offers no performance advantage over a StackPanel.

VirtualizingStackPanel is the default items host for the ListBox element. By default, the IsVirtualizing property is set to true.

When IsVirtualizing is set to false, a VirtualizingStackPanel behaves the same as an ordinary StackPanel.

The following example shows how to bind to an XML data source and virtualize the items displayed in a ListBox element using Extensible Application Markup Language (XAML). Notice that the IsVirtualizing attached property is explicitly set to true.

<Page xmlns="" 
      WindowTitle="VirtualizingStackPanel Sample" 
        <XmlDataProvider x:Key="Leagues" Source="Leagues.xml" XPath="Leagues/League"/>

    <DataTemplate x:Key="NameDataStyle">
      <TextBlock Text="{Binding XPath=@name}" FontFamily="Arial" FontSize="12" Foreground="Black"/>

  <Border HorizontalAlignment="Left" 
      <StackPanel DataContext="{Binding Source={StaticResource Leagues}}">
          <TextBlock Text="{Binding XPath=@name}" FontFamily="Arial" FontSize="18" Foreground="Black"/>
              <ListBox VirtualizingStackPanel.IsVirtualizing="True" 
                       ItemsSource="{Binding XPath=Team}" 
                       ItemTemplate="{DynamicResource NameDataStyle}"/>      


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0




July 2008

Added new members: GetVirtualizationMode method, SetVirtualizationMode method, VirtualizationMode property, VirtualizationModeProperty field, OnGotKeyboardFocus method, OnLostKeyboardFocus method, OnViewportOffsetChanged method, OnViewportSizeChanged method.

SP1 feature change.