WPF 数据绑定[10]

来源:互联网 发布:js 判断数组是否包含 编辑:程序博客网 时间:2024/05/16 13:49

由于WPF可以绑定任意的.Net对象,所以只要该对象符合一定的机制和规则就可以被绑定并呈现出来。

而出于便利的目的,和之前的vs版本一样,在数据绑定方面WPF也提供了相应的Provider【尽管不是专门为关系型数据库提供的=-=】

 

第一部分、XmlDataProvider

这是一个提供用于绑定XML的对象,配合数据岛的相关方法进行使用,将会使得绑定XML变得很方便

1、页面XAML的代码如下:

A、和其他资源一样,对于一个XmlDataProvider必须要提供一个唯一键用以标识。

 

B、绑定的时候,使用的是XPath,但是同时也是可以使用Path,Path主要是用于绑定对象的属性的获取,也就是说,在代码中的xml资源实际上是一个XmlNode或者XmlNodeList,所以可以通过Path获得这些对象的相关属性。

 

C、对于一般的XPath语法在这里都适用。

 

2、运行结果如下:

 

另外,也可以使用自动以的XML文件作为资源,只要将该文件添加到项目中,并设置Source就可以了,例如:Source=“aa.xml”这样。

 

第二部分、ObjectDataProvider

虽然之前已经实现了对于自定义对象的数据绑定,但是在使用的时候,还是遇到一些限制,主要是来自于之前的绑定没有办法针对函数进行,也就是说:

A、在构造的时候没有办法调用非默认的构造函数

B、没有办法对于具有返回值的函数进行相关的绑定

 

为了解决这些问题,可以使用ObjectDataProvider,换言之,使用这个对象之后,可以在代码中选择使用初始化的构造函数(而不用在onload事件中更改属性)以及可以通过事件返回相应可绑定的东西。

 

1、数据源类的代码如下:

 

2、XAML的代码如下:

 

其实过程比较简单:

A、先设置一个数据源对象,然后再Provider里面将Provider对象和数据源对象绑定,这里由于使用了反射,所以要指定Type。

B、如果要使用构造函数,在使用相关子节点<ObjectDataProvider.ConstructorParameters>

C、如果要使用自定义函数,在使用子节点<ObjectDataProvider.MethodParameters>,同时要声明MethodName属性。

 

在数据源类中,这次绑定的构造函数以及自定义函数都是具有两个或以上的重载,所以Provider是根据参数的类型+数量来决定使用哪一个。

 

最后,如果要使用自定义函数返回值的话,不需要声明Path,如果是使用构造函数的话,则需要声明,因为构造函数不返回任何东西。

 

原创粉丝点击