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

ItemsControl.ItemsPanel 属性

获取或设置模板,它定义了控制项的布局的面板。

命名空间:  System.Windows.Controls
程序集:  PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[BindableAttribute(false)]
public ItemsPanelTemplate ItemsPanel { get; set; }
<object>
  <object.ItemsPanel>
    <ItemsPanelTemplate .../>
  </object.ItemsPanel>
</object>

属性值

类型:System.Windows.Controls.ItemsPanelTemplate
一个 ItemsPanelTemplate,它定义了用于项的布局的面板。 ItemsControl 的默认值是一个指定 StackPanelItemsPanelTemplate

标识符字段

ItemsPanelProperty

设置为 true 的元数据属性

对于 ListBox,默认 ItemsPanelTemplate 指定了 VirtualizingStackPanel 对于 MenuItem,默认值使用 WrapPanel 对于 StatusBar,默认值使用 DockPanel

若要影响 ItemsControl 中项的布局,可以使用此属性来指定一个 ItemsPanelTemplate

ItemsControl 为可视化自定义提供了很大灵活性,并提供了许多样式和模板属性。 您可以使用 ItemContainerStyle 属性或 ItemContainerStyleSelector 属性来设置样式,以影响包含数据项的元素的外观。 例如,对于 ListBox,生成的容器是 ListBoxItem 控件;对于 ComboBox,它们是 ComboBoxItem 控件。 如果在控件上使用分组,可以使用 GroupStyleGroupStyleSelector 属性。 若要指定数据对象的可视化,请使用 ItemTemplateItemTemplateSelector 属性。 有关更多信息,请参见 数据模板化概述

若要创建水平 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 在此示例中,没有像前一个示例那样设置 ItemsPanel 属性,而是在 ControlTemplate 内指定了水平 StackPanel StackPanel 上的 IsItemsHost 属性设置为 true,表明生成的项应位于该面板中。 以此方式指定时,如果不使用 ControlTemplate,控件的用户将无法替换 ItemsPanel 因此,仅当您确信不希望在不使用模板的情况下替换面板时,才应如此操作。


<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>


.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 系统要求
显示: