ItemsControl.ItemTemplate 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置用来显示每个项的 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提供特定的显示说明,则每个项的生成 UI 都是基础集合中每个对象的字符串表示形式。
在 上ItemsControl设置 ItemTemplate 时,将生成 UI,如下所示 (使用 ListBox 作为示例) :
在内容生成期间, ItemsPanel 会启动请求, ItemContainerGenerator 以便为每个数据项创建容器。 对于 ListBox,容器为 ListBoxItem。 生成器调用回 以 ItemsControl 准备容器。
准备的一部分涉及将 的 ListBox 复制ItemTemplate为 ContentTemplate 的 ListBoxItem。
与所有 ContentControl 类型类似, ControlTemplate 的 ListBoxItem 包含 ContentPresenter。 应用模板时,会创建一个 ContentPresenter ,其 ContentTemplate 绑定到 ContentTemplate 的 ListBoxItem。
最后, ContentPresenter 将应用于 ContentTemplate 自身,并创建 UI。
如果定义了多个 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 指令 字符串值,引用作为资源请求的模板。
依赖项属性信息
标识符字段 | ItemTemplateProperty |
元数据属性设置为 true |
无 |