Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

ItemsControl.ItemContainerGenerator Property

Gets the ItemContainerGenerator that is associated with the control.

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

[BindableAttribute(false)]
[BrowsableAttribute(false)]
public ItemContainerGenerator ItemContainerGenerator { get; }

Property Value

Type: System.Windows.Controls.ItemContainerGenerator
The ItemContainerGenerator that is associated with the control. The default is null.

An ItemContainerGenerator is responsible for generating the user interface (UI) for its host, such as an ItemsControl. It maintains the association between the items in the data view of the control and the corresponding UIElement objects. Every ItemsControl has an associated item container that contains a data item in the item collection. You can use the ItemContainerGenerator property to access the item container that is associated with your ItemsControl. For example, if you have a data-bound TreeView control and you want to get a TreeViewItem based on its index or its associated data item, you can use the ItemContainerGenerator.ContainerFromIndex or the ItemContainerGenerator.ContainerFromItem method. Alternatively, you can use the ItemContainerGenerator.IndexFromContainer or the ItemContainerGenerator.ItemFromContainer method to get the index or data item that is associated with a given generated container element.

The IItemContainerGenerator interface is also used in advanced scenarios. Typically, advanced applications that have their own implementation of a virtualizing panel call members of the interface.

If you need to get a specific ListBoxItem at a particular index in a ListBox, you can use an ItemContainerGenerator.

The following example shows a ListBox and its items.

<ListBox Margin="10,0,0,5" Name="lb" VerticalAlignment="Top" Grid.Column="0" Grid.Row="2">
    <ListBoxItem>Item 0</ListBoxItem>
    <ListBoxItem>Item 1</ListBoxItem>
    <ListBoxItem>Item 2</ListBoxItem>
    <ListBoxItem>Item 3</ListBoxItem>
</ListBox>

The following example shows how to retrieve the item by specifying the index of the item in the ContainerFromIndex property of the ItemContainerGenerator.

private void GetIndex0(object sender, RoutedEventArgs e)
{
  ListBoxItem lbi = (ListBoxItem)
      (lb.ItemContainerGenerator.ContainerFromIndex(0));
  Item.Content = "The contents of the item at index 0 are: " +
      (lbi.Content.ToString()) + ".";
}

After you have retrieved the list box item, you can display the contents of the item, as shown in the following example.

Item.Content = "The contents of the item at index 0 are: " +
    (lbi.Content.ToString()) + ".";

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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

Show:
© 2014 Microsoft