ItemsControl.ItemTemplate Свойство

Определение

Получает или задает объект DataTemplate, используемый для отображения каждого элемента.Gets or sets the DataTemplate used to display each item.

public:
 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.DataTemplate ItemTemplate { get; set; }
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

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

DataTemplate, указывающее визуализацию объектов данных.A DataTemplate that specifies the visualization of the data objects. Значение по умолчанию — null.The default is null.

Атрибуты

Примеры

В следующем примере показано, как создать DataTemplate встроенное.The following example shows how to create a DataTemplate inline. Указывает, что каждый элемент данных отображается в виде TextBlock трех элементов в StackPanel. DataTemplateThe DataTemplate specifies that each data item appears as three TextBlock elements within a StackPanel. В этом примере объект данных является классом с именем Task.In this example, the data object is a class called Task. Обратите внимание TextBlock , что каждый элемент в этом шаблоне привязан к свойству Task класса.Note that each TextBlock element in this template is bound to a property of the Task class.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

Чаще всего DataTemplate в разделе reusables определяется, что он может быть многократно используемым объектом, как показано в следующем примере:It is more common to define a DataTemplate in the resources section so it can be a reusable object, as in the following example:

<Window.Resources>
<DataTemplate x:Key="myTaskTemplate">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>
</Window.Resources>

Теперь вы можете использовать myTaskTemplate в качестве ресурса, как показано в следующем примере:Now you can use myTaskTemplate as a resource, as in the following example:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

Полный пример см. в разделе Вводная часть примера стилизации и использования шаблонов.For the complete sample, see Introduction to Data Templating Sample.

Комментарии

Используйте ItemTemplate для указания визуализации объектов данных.You use the ItemTemplate to specify the visualization of the data objects. Если привязка привязана к объекту коллекции и вы не предоставляете конкретные инструкции по отображению DataTemplateс помощью, то ИПUI результирующий элемент каждого элемента представляет собой строковое представление каждого объекта в базовой коллекции. ItemsControlIf your ItemsControl is bound to a collection object and you do not provide specific display instructions using a DataTemplate, the resulting ИПUI of each item is a string representation of each object in the underlying collection.

При ItemTemplate ItemsControlзадании в ИПUI параметре создается следующим образом (в ListBox качестве примера используется пример):When you set an ItemTemplate on an ItemsControl, the ИПUI is generated as follows (using the ListBox as an example):

  1. Во время создания ItemsPanel содержимого компонент инициирует запрос ItemContainerGenerator для создания контейнера для каждого элемента данных.During content generation, the ItemsPanel initiates a request for the ItemContainerGenerator to create a container for each data item. Для ListBox контейнерListBoxItemимеет значение.For ListBox, the container is a ListBoxItem. Генератор обращается к, ItemsControl чтобы подготовить контейнер.The generator calls back into the ItemsControl to prepare the container.

  2. В процессе подготовки ItemTemplate предполагается копирование ListBox ContentTemplate компонента в в. ListBoxItemPart of the preparation involves the copying of the ItemTemplate of the ListBox to be the ContentTemplate of the ListBoxItem.

  3. Как и для ContentControl всех типов, ControlTemplate параметр объекта ListBoxItem содержит ContentPresenter.Similar to all ContentControl types, the ControlTemplate of a ListBoxItem contains a ContentPresenter. При ContentPresenter применении шаблона создается объект ContentTemplate , ContentTemplate привязанный к объекту. ListBoxItemWhen the template is applied, it creates a ContentPresenter whose ContentTemplate is bound to the ContentTemplate of the ListBoxItem.

  4. Наконец, объект ContentPresenter ContentTemplate применяет его к самому себе и создает ИПUI.Finally, the ContentPresenter applies that ContentTemplate to itself, and that creates the ИПUI.

Если определено более одного DataTemplate и вы хотите предоставить логику для программного выбора и DataTemplateприменения, используйте ItemTemplateSelector свойство.If you have more than one DataTemplate defined and you want to supply logic to programmatically choose and apply a DataTemplate, use the ItemTemplateSelector property.

ItemsControl Предоставляет большую гибкость для визуальной настройки и предоставляет множество свойств стилизации и шаблонов.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. ItemContainerStyle Используйте свойствоItemContainerStyleSelector или свойство, чтобы задать стиль для изменения внешнего вида элементов, содержащих элементы данных.Use the ItemContainerStyle property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. Например, для ListBoxсозданные контейнеры — ListBoxItem это элементы управления. для ComboBox, они являются ComboBoxItem элементами управления.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Чтобы изменить макет элементов, используйте ItemsPanel свойство.To affect the layout of the items, use the ItemsPanel property. Если вы используете группирование в элементе управления, можно использовать GroupStyle свойство или. GroupStyleSelectorIf you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

Более подробную информацию см. в разделе Общие сведения о шаблонах данных.For more information, see Data Templating Overview.

Использование атрибута XAMLXAML Attribute Usage

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>  

Значения XAMLXAML Values

ресаурцеекстенсионResourceExtension
Один из следующих вариантов: Расширение разметки StaticResourceили расширение разметки DynamicResource.One of the following: StaticResource Markup Extension, or DynamicResource Markup Extension. Если сами стили не содержат ссылки на потенциальные ссылки времени выполнения, такие как системные ресурсы или пользовательские настройки, для повышения производительности обычно рекомендуется использовать ссылку на расширение разметки StaticResource .Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource Markup Extension reference to a style is usually recommended for performance.

темплатересаурцекэйTemplateResourceKey
значение строки директивы x:Key , ссылающееся на шаблон, запрашиваемый в качестве ресурса.x:Key Directive string value referring to the template being requested as a resource.

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

Поле идентификатораIdentifier field ItemTemplateProperty
Свойства метаданных, для которых задано значениеtrueMetadata properties set to true НетNone

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

Дополнительно