Поделиться через


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

Значение свойства

ItemsPanelTemplate, определяющий панель, используемую для макета элементов. Значение по умолчанию для ItemsControl — это ItemsPanelTemplate, указывающий StackPanel.

Атрибуты

Примеры

Чтобы создать горизонтальную ListBox, можно создать шаблон, указывающий горизонтальную StackPanel и задать его в качестве свойства ItemsPanel. В следующем примере показан ListBoxStyle, создающий горизонтальный ListBox.

<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. Для свойства IsItemsHost задано значение true на StackPanel, указывающее, что созданные элементы должны находиться на панели. При указании этого способа 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>

Комментарии

Для ListBoxItemsPanelTemplate по умолчанию указывается VirtualizingStackPanel. Для MenuItemиспользуется WrapPanelпо умолчанию. Для StatusBarиспользуется DockPanelпо умолчанию.

Чтобы повлиять на макет элементов в ItemsControl, используйте это свойство для указания ItemsPanelTemplate.

ItemsControl обеспечивает большую гибкость для визуальной настройки и предоставляет множество свойств стилей и шаблонов. Свойство ItemContainerStyle или свойство ItemContainerStyleSelector позволяет задать стиль, чтобы повлиять на внешний вид элементов, содержащих элементы данных. Например, для ListBoxсозданные контейнеры являются элементами управления ListBoxItem; для ComboBoxони являются элементами управления ComboBoxItem. При использовании группировки в элементе управления можно использовать свойство GroupStyle или GroupStyleSelector. Чтобы указать визуализацию объектов данных, используйте ItemTemplate или свойство ItemTemplateSelector. Дополнительные сведения см. в обзоре шаблонов данных.

Сведения о свойстве зависимостей

Поле идентификатора ItemsPanelProperty
Свойства метаданных, заданные для true Никакой

Применяется к