信息
您所需的主题如下所示。但此主题未包含在此库中。

ItemsControl.ItemTemplate 属性

更新:2007 年 11 月

获取或设置用于显示每个项的 DataTemplate。这是一个依赖项属性。

命名空间:  System.Windows.Controls
程序集:  PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/xaml/presentation

[BindableAttribute(true)]
public DataTemplate ItemTemplate { get; set; }
/** @property */
/** @attribute BindableAttribute(true) */
public DataTemplate get_ItemTemplate()
/** @property */
/** @attribute BindableAttribute(true) */
public  void set_ItemTemplate(DataTemplate value)

public function get ItemTemplate () : DataTemplate
public function set ItemTemplate (value : DataTemplate)
<object>
  <object.ItemTemplate>
    <DataTemplate .../>
  </object.ItemTemplate>
</object>
<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>
ResourceExtension
                    以下之一:StaticResource 标记扩展或 DynamicResource 标记扩展。除非样式本身包含对潜在运行时引用(如系统资源或用户首选项)的引用,否则通常建议使用样式的 StaticResource 标记扩展引用以提高性能。
                TemplateResourceKey x:Key 属性字符串值,它引用作为资源来请求的模板。
                

属性值

类型:System.Windows.DataTemplate

一个 DataTemplate,它指定数据对象的可视化。默认值为 null

标识符字段

ItemTemplateProperty

设置为 true 的元数据属性

您使用 ItemTemplate 来指定数据对象的可视化。如果您的 ItemsControl 绑定到一个集合对象,并且您未使用 DataTemplate 提供明确的显示说明,则每个项的结果 UI 将是基础集合中每个对象的字符串表示形式。

当您在 ItemsControl 上设置 ItemTemplate 时,将生成如下所示的 UI(以 ListBox 为例):

  1. 在内容生成过程中,ItemsPanel 将启动一个 ItemContainerGenerator 请求以便为每个数据项创建一个容器。对于 ListBox,容器是一个 ListBoxItem。生成器回调 ItemsControl 以准备该容器。

  2. 部分准备工作涉及将 ListBoxItemTemplate 复制为 ListBoxItemContentTemplate

  3. 与所有 ContentControl 类型类似,ListBoxItemControlTemplate 也包含一个 ContentPresenter。应用该模板时,它会创建一个 ContentPresenter,其 ContentTemplate 绑定到 ListBoxItemContentTemplate

  4. 最后,ContentPresenter 将该 ContentTemplate 应用于自身,由此创建 UI。

如果您定义了多个 DataTemplate,并且希望提供逻辑以便以编程方式选择和应用 DataTemplate,请使用 ItemTemplateSelector 属性。

ItemsControl 为可视化自定义提供了很大灵活性,并提供了许多样式和模板属性。使用 ItemContainerStyle 属性或 ItemContainerStyleSelector 属性来设置样式,以影响包含数据项的元素的外观。例如,对于 ListBox,生成的容器是 ListBoxItem 控件;对于 ComboBox,它们是 ComboBoxItem 控件。若要影响项的布局,请使用 ItemsPanel 属性。如果在控件上使用分组,可以使用 GroupStyleGroupStyleSelector 属性。

有关更多信息,请参见数据模板化概述

下面的示例演示如何创建一个内联 DataTemplateDataTemplate 指定每个数据项显示为 StackPanel 中的三个 TextBlock 元素。在此示例中,数据对象是一个名为 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}"/>


有关完整示例,请参见数据模板化示例简介

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0

社区附加资源

显示:
© 2015 Microsoft