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