要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语
本文档已存档,并且将不进行维护。

ItemContainerGenerator 类

代表其主机生成user interface (UI),例如 ItemsControl

System.Object
  System.Windows.Controls.ItemContainerGenerator

命名空间:  System.Windows.Controls
程序集:  PresentationFramework(在 PresentationFramework.dll 中)

public sealed class ItemContainerGenerator : IRecyclingItemContainerGenerator, 
	IItemContainerGenerator, IWeakEventListener

ItemContainerGenerator 类型公开以下成员。

  名称说明
公共属性Status ItemContainerGenerator 的生成状态。
页首

  名称说明
公共方法ContainerFromIndex返回对应于 ItemCollection 中指定索引项的元素。
公共方法ContainerFromItem返回对应于指定项的 UIElement
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (继承自 Object。)
受保护的方法Finalize允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法GetHashCode用作特定类型的哈希函数。 (继承自 Object。)
公共方法GetType获取当前实例的 Type (继承自 Object。)
公共方法IndexFromContainer返回对应于指定生成的 UIElement 的项的索引。
公共方法ItemFromContainer返回对应于指定生成的 UIElement 的项。
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法ToString返回表示当前对象的字符串。 (继承自 Object。)
页首

  名称说明
公共事件ItemsChanged ItemsChanged 事件由 ItemContainerGenerator 引发,以通知项集合已更改的布局。
公共事件StatusChanged StatusChanged 事件由 ItemContainerGenerator 引发,以通知控件其状态已更改。
页首

  名称说明
显式接口实现私有方法IItemContainerGenerator.GenerateNext()返回用于显示下一项的容器元素。
显式接口实现私有方法IItemContainerGenerator.GenerateNext(Boolean)返回用于显示下一项的容器元素,并返回其是否为新生成(实现)的容器元素。
显式接口实现私有方法IItemContainerGenerator.GeneratorPositionFromIndex返回映射到指定索引处的项的 GeneratorPosition 对象。
显式接口实现私有方法IItemContainerGenerator.GetItemContainerGeneratorForPanel返回适合由指定面板使用的 ItemContainerGenerator。
显式接口实现私有方法IItemContainerGenerator.IndexFromGeneratorPosition返回映射到指定 GeneratorPosition 的索引。
显式接口实现私有方法IItemContainerGenerator.PrepareItemContainer准备指定元素作为相应项的容器。
显式接口实现私有方法IItemContainerGenerator.Remove此成员支持 Windows Presentation Foundation (WPF) 基础结构,不应在代码中直接使用。
显式接口实现私有方法IItemContainerGenerator.RemoveAll移除所有生成(实现)项。
显式接口实现私有方法IItemContainerGenerator.StartAt(GeneratorPosition, GeneratorDirection)从指定的 GeneratorPosition 开始并在指定的 GeneratorDirection 内准备生成器以生成项。
显式接口实现私有方法IItemContainerGenerator.StartAt(GeneratorPosition, GeneratorDirection, Boolean)从指定的 GeneratorPosition 开始并在指定的 GeneratorDirection 内控制是否从生成(实现)项开始来准备生成器以生成项。
显式接口实现私有方法IRecyclingItemContainerGenerator.Recycle此成员支持 Windows Presentation Foundation (WPF) 基础结构,不应在代码中直接使用。
显式接口实现私有方法IWeakEventListener.ReceiveWeakEvent此成员支持 Windows Presentation Foundation (WPF) 基础结构,但不应在代码中直接使用。
页首

ItemContainerGenerator 实现 IItemContainerGenerator,它是定义类型的接口,可以:

每个 ItemsControl 类型都具有一个对应的容器类型。 容器元素是包含项集合中的数据项的对象。 例如,对于 ListBox,生成的容器是 ListBoxItem 控件;对于 ComboBox,它们是 ComboBoxItem 控件。

ItemsControl 通过 IItemContainerGenerator 接口生成它的项。 ItemsControl ItemContainerGenerator 属性的类型为 ItemContainerGenerator,它实现的是 IItemContainerGenerator 接口。 因此,您可以使用 ItemContainerGenerator 属性访问与 ItemsControl 关联的 ItemContainerGenerator 对象。 例如,如果您有一个绑定了数据的 TreeView,并希望基于其索引或其关联数据项获取一个 TreeViewItem,则可以使用 ItemContainerGenerator.ContainerFromIndexItemContainerGenerator.ContainerFromItem 方法。 或者,您也可以使用 ItemContainerGenerator.IndexFromContainerItemContainerGenerator.ItemFromContainer 方法来获取与给定的所生成容器元素相关联的索引或数据项。

除了这些用法之外,IItemContainerGenerator 接口还用在一些高级方案中。 通常,具有自己的虚拟化面板实现的高级应用程序会调用该接口的成员。

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

受以下版本支持:4、3.5、3.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
显示: