0% found this document useful (0 votes)
58 views

Virtualizingstackpanel Class: Namespace: Assembly: Presentationframework - DLL

The VirtualizingStackPanel class arranges and virtualizes content on a single line that is oriented either horizontally or vertically. It calculates the number of visible items and only creates UI elements for those visible, improving performance over rendering all elements. Examples show how to use it with a ListBox and set properties like IsVirtualizing and VirtualizationMode.

Uploaded by

bato cera
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Virtualizingstackpanel Class: Namespace: Assembly: Presentationframework - DLL

The VirtualizingStackPanel class arranges and virtualizes content on a single line that is oriented either horizontally or vertically. It calculates the number of visible items and only creates UI elements for those visible, improving performance over rendering all elements. Examples show how to use it with a ListBox and set properties like IsVirtualizing and VirtualizationMode.

Uploaded by

bato cera
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

VirtualizingStackPanel Class

Definition
Namespace:
System.Windows.Controls
Assembly:
PresentationFramework.dll
Arranges and virtualizes content on a single line that is oriented either
horizontally or vertically.
C#Copy
public class VirtualizingStackPanel :
System.Windows.Controls.VirtualizingPanel,
System.Windows.Controls.Primitives.IScrollInfo
Inheritance
Object
DispatcherObject
DependencyObject
Visual
UIElement
FrameworkElement
Panel
VirtualizingPanel
VirtualizingStackPanel
Derived
System.Windows.Controls.Primitives.DataGridRowsPresenter
System.Windows.Controls.Ribbon.Primitives.RibbonMenuItemsPanel
Implements
IScrollInfo

Examples
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 VirtualizingStackPanel.IsVirtualizing  attached property is explicitly set
to true.

XAMLCopy
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="VirtualizingStackPanel Sample"
Height="150"
VerticalAlignment="Top">
<Page.Resources>
<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"/>
</DataTemplate>

</Page.Resources>
<Border HorizontalAlignment="Left"
VerticalAlignment="Top"
BorderBrush="Black"
BorderThickness="2">
<ScrollViewer>
<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}"/>
</StackPanel>
</ScrollViewer>
</Border>
</Page>

The following example creates a ListBox and sets


the VirtualizingStackPanel.VirtualizationMode  attached property to Recycling.

XAMLCopy
<StackPanel>

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

<ListBox Height="150" ItemsSource="{StaticResource data}"


VirtualizingStackPanel.VirtualizationMode="Recycling" />

</StackPanel>
The following example shows the data used in the previous example.

C#Copy
public class LotsOfItems : ObservableCollection<String>
{
public LotsOfItems()
{
for (int i = 0; i < 1000; ++i)
{
Add("item " + i.ToString());
}
}
}

Remarks
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 VirtualizingStackPanel.IsVirtualizing  attached property is set
to true.

When the VirtualizingStackPanel.IsVirtualizing  attached property is set


to false, a VirtualizingStackPanel behaves the same as an ordinary StackPanel.

You might also like