- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WPF中的数据绑定课案
章节提示:;数据绑定的基础知识;数据绑定的基础知识;数据绑定的基础知识;绑定到 XML
一种极为常见的分层数据处理方法就是利用单独的控件显示各个层级。以协
议组件为例,协议组件包括协议组、协议和协议的详细项及数据分析的组件。在
此情况下,我们可能需要一个组合框来显示所有协议组,用列表框显示所有选定
的协议,然后用 ItemsControl 显示所选协议的相关详细项信息。这是一种显示分
层数据的不错的方法,极易在 WPF 中实现。
;对象绑定和 DataTemplates
虽然 XmlDataProvider 对 XML 非常有用,但是当您想绑定到对象或对象列表
时,可以创建 ObjectDataProvider 作为资源。ObjectDataProvider 的 ObjectType 指
定将提供数据绑定源的对象,而 MethodName 则指示为获得数据而需调用的方法
。例如,假设有一个名为 PersonService 的类,该类使用一种名为 GetPersonList
的方法来返回列表 Person,那么 ObjectDataProvider 可能会如下所示:
;对数据进行排序
如果想以特定的方式对数据进行排序,可以绑定到 CollectionViewSource,
而不是直接绑定到 ObjectDataProvider。CollectionViewSource 则会成为数据源,
并充当截取 ObjectDataProvider 中的数据的媒介,并提供排序、分组和筛选功能,
然后将它传送到目标。接着显示的 CollectionViewSource 将其 Source 属性设置为
ObjectDataProvider(人员)的资源名称。然后我通过指示排序依据的属性及其方
向定义了数据的排序顺序:
;依赖属性的实现
依赖属性其实也是普通的.NET属性,只是通过DependencyProperty.Register方法
将普通的.NET属性注册为依赖属性。在依赖属性的声明中,其实对应的普通.NET
属性并不是必需的,因为其内部的GetValue和SetValue方法是公开的,依赖属性的
使用者可以通过调用GetValue/SetValue而放弃对普通.NET属性的依赖。但建立在
普通.NET熟悉之上更符合我们通常的做法,而且这样有利于在XAML中设置属性。
;使用继承的 DataContext
默认情况下,所有绑定均隐式绑定在某个元素的 DataContext 属性上。因此,
可以说是元素的 DataContext 引用了其数据源。在 DataContext 的工作方式上,需
要了解一些特殊的内容:
并非必须设置元素的 DataContext 属性才能引用数据源对象。
利用了对 WPF 中内置继承依赖关系属性的支持。
说明:继承依赖关系属性的另一个示例是 FontSize,它含有所有元素。如果
您在窗口中设置了 FontSize 依赖关系属性,则默认情况下,该窗口中的所有元素
都将以该大小显示其文本。沿元素树向下传播 FontSize 值所使用的基础结构与传
播 DataContext 的基础结构相同。
;使用集合视图
当 WPF 控件绑定到数据集合上时,它们不会直接绑定在集合本身上。而是
隐式地绑定在自动封装该集合的视图上。该视图可实现 ICollectionView 界面,可
以是若干具体实现之一,如 ListCollectionView。
一个集合视图有多项职责。它可跟踪集合中的当前项,该项通常会转换为列
表控件中的活动/选定项。集合视图还提供在列表内排序、筛选和归组项目的一般
方法。可以围绕集合将多个控件绑定到同一视图上,以便它们形成彼此并列的关
系。以下代码显示了 ICollectionView 的一些功能:
;// Get the default view wrapped around the list of Customers.
ICollectionView view = CollectionViewSource.GetDefaultView(allCustomers);
// Get the Customer selected in the UI.
Customer selectedCustomer = view.CurrentItem as Customer;
// Set the selected Customer in the UI.
view.MoveCurrentTo(someOtherCustomer);
所有列表控件(如列表
文档评论(0)