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>
Чаще всего в разделе resources определяется 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, результирующий пользовательский интерфейс каждого элемента представляет собой строковое представление каждого объекта в базовой коллекции.
При установке ItemTemplate в ItemsControlпользовательский интерфейс создается следующим образом (в ListBox качестве примера используется ):
Во время создания содержимого ItemsPanel инициирует запрос на ItemContainerGenerator создание контейнера для каждого элемента данных. Для ListBoxконтейнером ListBoxItemявляется . Генератор вызывает обратно в для ItemsControl подготовки контейнера.
Часть подготовки включает копирование ItemTemplate объекта , ListBox который будет являться элементом ContentTemplateListBoxItem.
Как и все ContentControl типы, ControlTemplateListBoxItem объект содержит ContentPresenter. При применении шаблона создается ContentPresenter объект , привязанный ContentTemplate к объекту ContentTemplateListBoxItem.
Наконец, 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 на стиль.
Строковое значение templateResourceKeyx:Key Directive , ссылающееся на шаблон, запрашиваемый в качестве ресурса.
Сведения о свойстве зависимостей
Поле идентификатора | ItemTemplateProperty |
Для свойств метаданных задано значение true |
Нет |