DataTemplate 类

定义

描述数据对象的可视结构。

public ref class DataTemplate : System::Windows::FrameworkTemplate
[System.Windows.Markup.DictionaryKeyProperty("DataTemplateKey")]
public class DataTemplate : System.Windows.FrameworkTemplate
[<System.Windows.Markup.DictionaryKeyProperty("DataTemplateKey")>]
type DataTemplate = class
    inherit FrameworkTemplate
Public Class DataTemplate
Inherits FrameworkTemplate
继承
派生
属性

示例

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

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

注解

使用 a DataTemplate 指定数据对象的可视化效果。 DataTemplate将此类ListBox对象绑定到ItemsControl整个集合时特别有用。 如果没有特定说明,则显示 ListBox 集合中对象的字符串表示形式。 在这种情况下,可以使用 a DataTemplate 来定义数据对象的外观。 内容 DataTemplate 将成为数据对象的可视结构。

有关深入讨论,请参阅 数据模板化概述

构造函数

名称 说明
DataTemplate()

初始化 DataTemplate 类的新实例。

DataTemplate(Object)

使用指定的DataType属性初始化类的新实例DataTemplate

属性

名称 说明
DataTemplateKey

获取 . 的默认键 DataTemplate

DataType

获取或设置其 DataTemplate 用途的类型。

Dispatcher

获取与此DispatcherDispatcherObject关联的值。

(继承自 DispatcherObject)
HasContent

获取一个值,该值指示此模板是否具有优化的内容。

(继承自 FrameworkTemplate)
IsSealed

获取一个值,该值指示此对象是否处于不可变状态,因此无法更改它。

(继承自 FrameworkTemplate)
Resources

获取或设置可在此模板范围内使用的资源集合。

(继承自 FrameworkTemplate)
Template

获取或设置对对象的引用,该对象在编写器定义或应用模板时记录或播放模板的 XAML 节点。

(继承自 FrameworkTemplate)
Triggers

获取一组触发器,这些触发器应用属性值或基于一个或多个条件执行操作。

VisualTree

获取或设置模板的根节点。

(继承自 FrameworkTemplate)

方法

名称 说明
CheckAccess()

确定调用线程是否有权访问此 DispatcherObject权限。

(继承自 DispatcherObject)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
FindName(String, FrameworkElement)

查找与此模板中定义的指定名称关联的元素。

(继承自 FrameworkTemplate)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
LoadContent()

将模板的内容作为对象的实例加载,并返回内容的根元素。

(继承自 FrameworkTemplate)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
RegisterName(String, Object)

将新的名称/对象对注册到当前名称范围。

(继承自 FrameworkTemplate)
Seal()

锁定模板,使其无法更改。

(继承自 FrameworkTemplate)
ShouldSerializeResources(XamlDesignerSerializationManager)

返回一个值,该值指示序列化进程是否应在此类实例上序列化 Resources 属性值。

(继承自 FrameworkTemplate)
ShouldSerializeVisualTree()

返回一个值,该值指示序列化进程是否应在此类实例上序列化 VisualTree 属性值。

(继承自 FrameworkTemplate)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
UnregisterName(String)

从 XAML 名称范围中删除名称/对象映射。

(继承自 FrameworkTemplate)
ValidateTemplatedParent(FrameworkElement)

根据一组规则检查模板化父级。

VerifyAccess()

强制调用线程有权访问此 DispatcherObject权限。

(继承自 DispatcherObject)

显式接口实现

名称 说明
INameScope.FindName(String)

返回具有提供标识名称的对象。

(继承自 FrameworkTemplate)
IQueryAmbient.IsAmbientPropertyAvailable(String)

查询指定的环境属性是否在当前范围内可用。

(继承自 FrameworkTemplate)

适用于

另请参阅