您所在的位置: 首页 > 开发 > .Net >

WPF数据绑定之数据模板(1)

http://developer.51cto.com  2008-08-27 16:20  佚名  MSDN  我要评论(0)
  • 摘要:WPF 数据模板模型为定义数据的表示提供了很大的灵活性。WPF 控件具有支持自定义数据表示的内置功能。本主题首先演示如何定义 DataTemplate,然后介绍其他数据模板功能,例如根据自定义逻辑选择模板和支持显示分层数据。
  • 标签:WPF  WPF开发  WPF入门  数据模板

WPF 数据模板模型为定义数据的表示提供了很大的灵活性。WPF 控件具有支持自定义数据表示的内置功能。本主题首先演示如何定义 DataTemplate,然后介绍其他数据模板功能,例如根据自定义逻辑选择模板和支持显示分层数据。

先决条件
本主题重点介绍数据模板功能,不介绍数据绑定概念。有关基本数据绑定概念的信息,请参见数据绑定概述。

DataTemplate 用于数据表示,是 WPF 样式和模板模型提供的许多功能中的一种。

另外,了解Resources也很重要,它实际上是有关使对象(例如,Style 和 DataTemplate)成为可重用对象的内容。

数据模板基础

为了说明 DataTemplate 为什么这么重要,让我们演示一个数据绑定的示例。在本示例中,有一个绑定到 Task 对象列表的 ListBox。每个 Task 对象都有 TaskName (string)、Description (string)、Priority (int) 和类型 TaskType 的属性,它是一个 Enum,其值为 Home 和 Work。

 

没有 DataTemplate
如果没有 DataTemplate,我们的 ListBox 当前具有如下外观:

 
由于没有任何特定说明,ListBox 在尝试显示集合中的对象时,默认情况下会调用 ToString。因此,如果 Task 对象重写 ToString 方法,则 ListBox 显示基础集合中每个源对象的字符串表示形式。

例如,如果 Task 类以这种方式重写 ToString 方法,其中 name 是 TaskName 属性的字段:

 

则 ListBox 如下所示:

 
但是,这是受到限制的,并不灵活。另外,如果您要绑定到 XML 数据,您不能重写 ToString。

定义简单 DataTemplate
该解决方案定义 DataTemplate。这样做的一种方式是将 ListBox 的 ItemTemplate 属性设置为 DataTemplate。DataTemplate 中指定的内容变成数据对象的可视结构。以下 DataTemplate 相当简单。我们要给出的说明是:每项显示为 StackPanel 中的三个 TextBlock 元素。每个 TextBlock 元素绑定到 Task 类的一个属性。

 

本主题中的示例的基础数据是 CLR 对象的一个集合。如果您要绑定到 XML 数据,基本概念相同,但是语法稍微不同。例如,不是让 Path=TaskName,而是将 XPath 设置为 @TaskName(如果 TaskName 是 XML 节点的属性)。

现在 ListBox 如下所示:

 

共5页: 1 [2] [3] [4] [5] 下一页
【内容导航】
 第 1 页:数据模板  第 2 页:将 DataTemplate 创建为资源
 第 3 页:使用 DataTrigger 来应用属性值  第 4 页:DataTemplate 中有哪些内容
 第 5 页:对 ItemsControl 进行样式和模板处理
让你的代码“炫”起来——WPF开发教程
JSP开发基础教程
PHP开发基础入门
深入Vista应用程序开发
走向银光 —— 一步一步学Silverlight2
 
 验证码: (点击刷新验证码)   匿名发表
  • 互联网时代的软件革命—SaaS架构设计

  • 作者:叶伟等著
  • 本书是国内第一本完整介绍SaaS应用开发的书籍,聚集于架构设计。内容是互联网领域具有丰富实践经验的8位一线架构师,对于多年Sa..
Copyright©2005-2008 51CTO.COM 版权所有