ItemsControl.ItemsPanel 属性

定义

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

public:
 property System::Windows::Controls::ItemsPanelTemplate ^ ItemsPanel { System::Windows::Controls::ItemsPanelTemplate ^ get(); void set(System::Windows::Controls::ItemsPanelTemplate ^ value); };
[System.ComponentModel.Bindable(false)]
public System.Windows.Controls.ItemsPanelTemplate ItemsPanel { get; set; }
[<System.ComponentModel.Bindable(false)>]
member this.ItemsPanel : System.Windows.Controls.ItemsPanelTemplate with get, set
Public Property ItemsPanel As ItemsPanelTemplate

属性值

定义用于项目布局的面板的 ItemsPanelTemplateItemsControl 的默认值是指定 StackPanelItemsPanelTemplate

属性

示例

若要创建水平 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 属性设置为 trueStackPanelStackPanel,指示生成的项应进入面板中。 以这种方式指定时,控件的用户无法替换 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>

注解

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

若要影响 ItemsControl中项的布局,请使用此属性指定 ItemsPanelTemplate

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

Dependency 属性信息

标识符字段 ItemsPanelProperty
设置为 true 的元数据属性 没有

适用于