ItemsPanelTemplate 类

定义

指定 ItemsPresenterItemsControl项的布局创建的面板。

public ref class ItemsPanelTemplate : System::Windows::FrameworkTemplate
public class ItemsPanelTemplate : System.Windows.FrameworkTemplate
type ItemsPanelTemplate = class
    inherit FrameworkTemplate
Public Class ItemsPanelTemplate
Inherits FrameworkTemplate
继承

示例

若要创建水平 ListBox,可以创建一个模板,该模板指定水平 StackPanel 并将其设置为 ItemsPanel 属性。 以下示例演示创建水平 ListBoxListBoxStyle

<Style TargetType="ListBox">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Center"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
</Style>

以下示例使用 ControlTemplate 创建具有圆角的水平 ListBox。 请注意,在此示例中,在 ControlTemplate中指定水平 StackPanel,而不是设置 ItemsPanel 属性。 请注意,IsItemsHost 属性设置为 StackPanel上的 true,指示生成的项应进入面板中。 以这种方式指定时,控件的用户无法替换 ItemsPanel,而无需使用 ControlTemplate。 因此,只有在知道你不希望在不使用模板的情况下替换面板,才执行此操作。

<Style TargetType="ListBox">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ListBox">
        <Border CornerRadius="5" Background="{TemplateBinding ListBox.Background}">
          <ScrollViewer HorizontalScrollBarVisibility="Auto">
            <StackPanel Orientation="Horizontal"
                       VerticalAlignment="Center"
                       HorizontalAlignment="Center"
                       IsItemsHost="True"/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

或者,可以执行以下操作来实现相同的结果。 在本例中,ItemsPresenter 根据 ItemsPanelTemplate指定的内容为项的布局创建面板。

<Style TargetType="{x:Type ListBox}">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"
                     VerticalAlignment="Center"
                     HorizontalAlignment="Center"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ListBox}">
        <Border CornerRadius="5"
                Background="{TemplateBinding ListBox.Background}">
          <ScrollViewer HorizontalScrollBarVisibility="Auto">
            <ItemsPresenter/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

有关如何在 ItemsControl上使用不同样式和模板化属性的示例,请参阅 数据模板化概述

注解

ItemsPanelTemplate 指定用于项目布局的面板。 GroupStyle 具有 ItemsPanelTemplate类型的 Panel 属性。 ItemsControl 类型具有 ItemsPanelTemplate类型的 ItemsPanel 属性。

每个 ItemsControl 类型都有默认 ItemsPanelTemplate。 对于 ItemsControl 类,默认 ItemsPanel 值是指定 StackPanelItemsPanelTemplate。 对于 ListBox,默认值使用 VirtualizingStackPanel。 对于 MenuItem,默认使用 WrapPanel。 对于 StatusBar,默认使用 DockPanel

构造函数

ItemsPanelTemplate()

初始化 ItemsPanelTemplate 类的实例。

ItemsPanelTemplate(FrameworkElementFactory)

使用指定的模板初始化 ItemsPanelTemplate 类的实例。

属性

Dispatcher

获取与此 DispatcherObject 关联的 Dispatcher

(继承自 DispatcherObject)
HasContent

获取一个值,该值指示此模板是否具有优化的内容。

(继承自 FrameworkTemplate)
IsSealed

获取一个值,该值指示此对象是否处于不可变状态,因此无法更改它。

(继承自 FrameworkTemplate)
Resources

获取或设置可在此模板范围内使用的资源集合。

(继承自 FrameworkTemplate)
Template

获取或设置对对象的引用,该对象在编写器定义或应用模板时记录或播放模板的 XAML 节点。

(继承自 FrameworkTemplate)
VisualTree

获取或设置模板的根节点。

(继承自 FrameworkTemplate)

方法

CheckAccess()

确定调用线程是否有权访问此 DispatcherObject

(继承自 DispatcherObject)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
FindName(String, FrameworkElement)

查找与此模板中定义的指定名称关联的元素。

(继承自 FrameworkTemplate)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
LoadContent()

将模板的内容作为对象的实例加载,并返回内容的根元素。

(继承自 FrameworkTemplate)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
RegisterName(String, Object)

将新的名称/对象对注册到当前名称范围。

(继承自 FrameworkTemplate)
Seal()

锁定模板,使其无法更改。

(继承自 FrameworkTemplate)
ShouldSerializeResources(XamlDesignerSerializationManager)

返回一个值,该值指示序列化进程是否应在此类实例上序列化 Resources 属性的值。

(继承自 FrameworkTemplate)
ShouldSerializeVisualTree()

返回一个值,该值指示序列化进程是否应在此类实例上序列化 VisualTree 属性的值。

(继承自 FrameworkTemplate)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
UnregisterName(String)

从 XAML 名称范围中删除名称/对象映射。

(继承自 FrameworkTemplate)
ValidateTemplatedParent(FrameworkElement)

检查模板化父级是否为非 null ItemsPresenter 对象。

VerifyAccess()

强制调用线程有权访问此 DispatcherObject

(继承自 DispatcherObject)

显式接口实现

INameScope.FindName(String)

返回具有提供标识名称的对象。

(继承自 FrameworkTemplate)
IQueryAmbient.IsAmbientPropertyAvailable(String)

查询指定的环境属性是否在当前范围内可用。

(继承自 FrameworkTemplate)

适用于