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


ItemsControl.ItemTemplate Свойство

Определение

Возвращает или задает используемый DataTemplate для отображения каждого элемента.

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; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

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

Значение, DataTemplate указывающее визуализацию объектов данных. Значение по умолчанию — null.

Атрибуты

Примеры

В следующем примере показано, как создать встроенный DataTemplate код. Указывает DataTemplate , что каждый элемент данных отображается как три TextBlock элемента внутри StackPanelэлемента. В этом примере объект данных называется классом Task. Обратите внимание, что каждый TextBlock элемент в этом шаблоне привязан к свойству Task класса.

<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 в разделе ресурсов, поэтому он может быть повторно используемым объектом, как показано в следующем примере:

<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 в качестве ресурса, как показано в следующем примере:

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

Полный пример см. в разделе Введение в шаблон данных.

Комментарии

Вы используете для ItemTemplate указания визуализации объектов данных. Если объект ItemsControl коллекции привязан к объекту коллекции, и вы не предоставляете конкретные инструкции по отображению с помощью DataTemplate, результирующий пользовательский интерфейс каждого элемента является строковым представлением каждого объекта в базовой коллекции.

При настройке в объекте ItemsControlпользовательского ItemTemplate интерфейса создается следующим образом (с помощью ListBox примера):

  1. Во время создания контента ItemsPanel инициируется запрос ItemContainerGenerator на создание контейнера для каждого элемента данных. Для ListBoxконтейнера используется ListBoxItem. Генератор возвращается в ItemsControl контейнер для подготовки контейнера.

  2. Часть подготовки включает копирование ItemTemplate из ListBox нее ContentTemplateListBoxItem.

  3. Как и все ContentControl типы, ControlTemplateListBoxItem содержит объект ContentPresenter. При применении шаблона создается ContentPresenter объект, ContentTemplate привязанный к ContentTemplate объекту ListBoxItem.

  4. Наконец, оно ContentPresenter применяется ContentTemplate к самому себе и создает пользовательский интерфейс.

Если у вас несколько DataTemplate определенных и вы хотите предоставить логику программно выбрать и применить ее DataTemplate, используйте ItemTemplateSelector это свойство.

Это ItemsControl обеспечивает большую гибкость для настройки визуальных элементов и предоставляет множество свойств стилизации и шаблонов. ItemContainerStyle Используйте свойство или ItemContainerStyleSelector свойство, чтобы задать стиль, чтобы повлиять на внешний вид элементов, содержащих элементы данных. Например, ListBoxсозданные контейнеры являются ListBoxItem элементами управления, для ComboBoxкоторых они являются ComboBoxItem элементами управления. Чтобы повлиять на макет элементов, используйте ItemsPanel это свойство. Если вы используете группирование в элементе управления, можно использовать GroupStyle или GroupStyleSelector свойство.

Дополнительные сведения см. в разделе "Общие сведения о шаблоне данных".

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

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>

Значения XAML

ResourceExtension Одно из следующих элементов: расширение разметки StaticResource или расширение разметки DynamicResource. Если стили сами по себе не содержат ссылки на потенциальные ссылки во время выполнения, такие как системные ресурсы или предпочтения пользователя, ссылка на расширение staticResource Markup на стиль обычно рекомендуется для повышения производительности.

Строковое значение TemplateResourceKeyx:Key, ссылающееся на шаблон, запрашиваемый в качестве ресурса.

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

Элемент Ценность
Поле идентификатора ItemTemplateProperty
Свойства метаданных, равные свойству true Нет

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

См. также раздел