要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

DataTemplate 类

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

命名空间:  System.Windows
程序集:  System.Windows(在 System.Windows.dll 中)

public class DataTemplate : FrameworkTemplate
<DataTemplate ...>
  templateContent
</DataTemplate>

XAML 值

templateContent

定义此 DataTemplate 的对象树。 该树必须有一个根元素,而该根元素可以有零个或更多的子元素。

DataTemplate 类型公开以下成员。

  名称说明
公共方法受 Silverlight for Windows Phone 支持DataTemplate()初始化 DataTemplate 类的新实例,而不初始化 DataType 属性。
公共方法DataTemplate(Object)初始化 DataTemplate 类的新实例,将 DataType 属性设置为指定值。
页首

  名称说明
公共属性DataType获取或设置此 DataTemplate 所针对的类型。
公共属性受 Silverlight for Windows Phone 支持Dispatcher获取与此对象关联的 Dispatcher (继承自 DependencyObject。)
页首

  名称说明
公共方法受 Silverlight for Windows Phone 支持CheckAccess确定调用线程是否可以访问此对象。 (继承自 DependencyObject。)
公共方法受 Silverlight for Windows Phone 支持ClearValue清除依赖项属性的本地值。 (继承自 DependencyObject。)
公共方法受 Silverlight for Windows Phone 支持Equals(Object)确定指定的 Object 是否等于当前的 Object (继承自 Object。)
受保护的方法受 Silverlight for Windows Phone 支持Finalize允许对象在垃圾回收对 Object 进行回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法受 Silverlight for Windows Phone 支持GetAnimationBaseValue返回为 Silverlight 依赖项属性设置的任意基值,在动画不活动时将应用它们。 (继承自 DependencyObject。)
公共方法受 Silverlight for Windows Phone 支持GetHashCode用作特定类型的哈希函数。 (继承自 Object。)
公共方法受 Silverlight for Windows Phone 支持GetType获取当前实例的 Type (继承自 Object。)
公共方法受 Silverlight for Windows Phone 支持GetValueDependencyObject 返回依赖项属性的当前有效值。 (继承自 DependencyObject。)
公共方法受 Silverlight for Windows Phone 支持LoadContent创建 DataTemplate 中的 UIElement 对象。
受保护的方法受 Silverlight for Windows Phone 支持MemberwiseClone创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法受 Silverlight for Windows Phone 支持ReadLocalValue返回依赖项属性的本地值(如果设置了本地值)。 (继承自 DependencyObject。)
公共方法受 Silverlight for Windows Phone 支持SetValueDependencyObject 设置依赖项属性的本地值。 (继承自 DependencyObject。)
公共方法受 Silverlight for Windows Phone 支持ToString返回表示当前对象的字符串。 (继承自 Object。)
页首

一般可使用 DataTemplate 来指定数据的可视表示形式。 DataTemplate 对象在将 ItemsControl(如 ListBox)绑定到整个集合时尤其有用。 如果没有特殊说明,ListBox 将在集合中显示对象的字符串表示形式。 在此情况下,可以使用 DataTemplate 定义数据对象的外观。 DataTemplate 的内容变成数据对象的可视结构。

可以在 DataTemplate 中使用数据绑定。 例如,假定 ListBox 绑定到 Customer 对象的集合,并且将 ItemTemplate 属性设置为 DataTemplate 创建 ListBox 时,将为集合中的每个 Customer 创建一个 ListBoxItem,并将 ListBoxItemDataContext 设置为相应的客户。 也就是说,第一个 ListBoxItemDataContext 设置为第一个客户,第二个 ListBoxItemDataContext 设置为第二个客户,依此类推。 可以将 DataTemplate 中的元素绑定到 Customer 对象的属性。

还可以使用 DataTemplate 在多个 ContentControl 对象之间共享 UIElement 对象。 例如,假设需要应用程序上的多个按钮具有相同的图形。 可以创建一个包含此图形的 DataTemplate,并将它用作这些按钮的 ContentTemplate 有关更多信息,请参见 ContentControl.ContentTemplate

可以将 DataTemplate 作为 object.ItemTemplate 属性元素的直接子级。 还可以定义一个 DataTemplate 作为资源,然后将该资源作为 ItemTemplate 属性的值引用。

定义用于创建数据模板的内容的 XAML 用法不作为可设置的属性公开。 这是内置于 DataTemplate 对象元素的 XAML 处理的特殊行为。

下面的示例使用 DataTemplate 显示 ListBox 的项。 在此示例中,ListBox 绑定到 Customer 对象的集合。 DataTemplate 包含 TextBlock 控件,这些控件绑定到 FirstNameLastNameAddress 属性。 有关数据绑定的更多信息,请参见数据绑定


<Grid>
    <Grid.Resources>
        <src:Customers x:Key="customers"/>
    </Grid.Resources>

    <ListBox ItemsSource="{StaticResource customers}" Width="350" Margin="0,5,0,10">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Padding="5,0,5,0"
          Text="{Binding FirstName}" />
                    <TextBlock Text="{Binding LastName}" />
                    <TextBlock Text=", " />
                    <TextBlock Text="{Binding Address}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>


下面的示例演示 Customer 类和 ListBox 绑定到的集合。


public class Customer
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String Address { get; set; }

    public Customer(String firstName, String lastName, String address)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Address = address;
    }

}

public class Customers : ObservableCollection<Customer>
{
    public Customers()
    {
        Add(new Customer("Michael", "Anderberg",
                "12 North Third Street, Apartment 45"));
        Add(new Customer("Chris", "Ashton",
                "34 West Fifth Street, Apartment 67"));
        Add(new Customer("Cassie", "Hicks",
                "56 East Seventh Street, Apartment 89"));
        Add(new Customer("Guido", "Pica",
                "78 South Ninth Street, Apartment 10"));
    }

}


Silverlight

受以下版本支持:5、4、3

Silverlight for Windows Phone

受以下版本支持:Windows Phone OS 7.1、Windows Phone OS 7.0

有关 Silverlight 支持的操作系统和浏览器的列表,请参见 支持的操作系统和浏览器

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

社区附加资源

添加
显示: