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


ItemsPanelTemplate Класс

Определение

Указывает панель, которую ItemsPresenter создает для макета элементов ItemsControl.

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. В следующем примере показан 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>

Пример использования различных свойств стилей и шаблонов в ItemsControlсм. в обзореданных.

Комментарии

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

Каждый тип ItemsControl имеет ItemsPanelTemplateпо умолчанию. Для класса ItemsControl значение по умолчанию ItemsPanel является ItemsPanelTemplate, указывающее StackPanel. Для ListBoxиспользуется VirtualizingStackPanelпо умолчанию. Для MenuItemиспользуется WrapPanelпо умолчанию. Для StatusBarиспользуется DockPanelпо умолчанию.

Конструкторы

ItemsPanelTemplate()

Инициализирует экземпляр класса ItemsPanelTemplate.

ItemsPanelTemplate(FrameworkElementFactory)

Инициализирует экземпляр класса ItemsPanelTemplate с указанным шаблоном.

Свойства

Dispatcher

Возвращает Dispatcher, с которым связан этот DispatcherObject.

(Унаследовано от 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)

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