WPF数据提供者ObjectDataProvider
2016-08-19 11:23
239 查看
最近工作比较忙,学了东西就马上用了,一个月没有写东西了。觉得数据提供者是一个非常有用,用起来十分便捷的东西,所以利用昨晚和今晚的空余时间总结了一下ObjectDataProvider和XmlDataProvider方面的知识,这都算一个主题吧,把数据写在xaml中去让其他元素绑定使用。
先给出应用例子:
数据是不会改变的,其实有很多方式能实现这个效果,但是,这次我要总结的是WPF中强大的绑定功能,那么最方便的方法是什么呢?莫过于使用ObjectDataProvider来提供数据,然后ComboBox中的ItemsSource中绑定数据。
1.ObjectDataProvider
说起这个提供者,我们姑且叫他(是他)对象提供器,这个提供器有两个接口,一个是接收类型的接口,一个接收该类型中方法的接口,类型接口上面还有个输入器(专门用来输入类型构造函数的参数的),方法接口上面也有个输入器(专门用来输入方法的参数的),好了这样一个模型出来了,用起来就方便了。在Xaml中怎么使用这个对象提供器呢???首先这个对象提供器要有个位置站,才能被其他人访问嘛,所以我们在资源中分出一个位置让别的元素访问(通过Key)。另外还有一个需要注意的地方就是:在操作两个输入器的时候,传入的是实参,那么实参就是一个对象,例如int,bool,string等,这些哪来??添加个命名空间:xmlns:sys="clr-namespace:System;assembly=mscorlib"然后所有系统类型都在sys命名空间上了,如果需要创建自定义类型实例,那么,,同理,引用你那个自定义类型的命名空间进xaml中。
说了一下理论,下面来实际做点事情,有意思的事情:
步骤1.准备数据源
这一步需要做的是,新建一个数据提供类,然后在类中创建一个方法来返回数据(静态或者不是静态都行).
我准备了这一个数据源,构造函数和方法都需要传入参数,有两个数据列表,MyColorsList是返回所有颜色中10到20位,SystemColorsList中是所有系统颜色,通过GetColors方法的参数控制返回哪一个。好了数据源准备好了,是时候镶嵌到ObjectDataProvider中去了。
步骤2.配置ObjectDataProvider
把两个接口(MethodName和ObjectType)接好,然后接口上面的输入器提供好实例。一切准备妥当。下一步是使用
步骤3.使用亲爱的ObjectDataProvider
绑定Source到ItemsSource上面,有一个有意思的地方就是通过绑定设定SelectedValue的值,绑定自己的ItemsSource的地3个子数据.
下面看效果
即使不用运行,数据一览无余。
(WPF强大啊)
然后就能使用这些数据绑定到文字,动态改变颜色了~
那么如果需要绑定枚举怎么办?例如系统定义的枚举,例如HorizontalAlignment。Enum类中有一个方法叫GetValues,这个方法
接收一个枚举类型,返回枚举内容的数组,那么运用上面的知识就很容易了。这里的主要难题就是提供的参数不是普通实例,而是类型,怎么办?使用x命名空间的类型扩展点,提供类型名字就能创建一个类型实例。
OK,使用起来也一样的,绑定到ItemsSource中去吧。
-------------------------------------- 实战-----------------------------------------------
下面做一个小东西玩一下:字符计数器
整体:
计数器我通过ObjectDataProvider提供给结果绑定。
这里先说下大概思路:ObjectDataProvider中两个接口接收计数器类型和计数方法,计数方法接收两个参数,一个就是内容(绑定到下面的TextBox中,观察修改),一个就是字符(绑定到上面的textbox中,观察修改),结果就绑定到结果那里。
下面看代码实现:
计数器类和方法,很简单
前台数据提供器:
两个转换器,一个用来将得到的结果(int类型)转换成String输出到Text中,一个就是用户输入的搜索字符串转变成字符传入到方法中被使用的。
前台代码给出:
这里需要注意的是绑定到ObjectDataProvider中的MethodParameters[1],并且设置BindsDirectlyToSource才能绑定带参数列表。其他的都简单了。
先给出应用例子:
数据是不会改变的,其实有很多方式能实现这个效果,但是,这次我要总结的是WPF中强大的绑定功能,那么最方便的方法是什么呢?莫过于使用ObjectDataProvider来提供数据,然后ComboBox中的ItemsSource中绑定数据。
1.ObjectDataProvider
说起这个提供者,我们姑且叫他(是他)对象提供器,这个提供器有两个接口,一个是接收类型的接口,一个接收该类型中方法的接口,类型接口上面还有个输入器(专门用来输入类型构造函数的参数的),方法接口上面也有个输入器(专门用来输入方法的参数的),好了这样一个模型出来了,用起来就方便了。在Xaml中怎么使用这个对象提供器呢???首先这个对象提供器要有个位置站,才能被其他人访问嘛,所以我们在资源中分出一个位置让别的元素访问(通过Key)。另外还有一个需要注意的地方就是:在操作两个输入器的时候,传入的是实参,那么实参就是一个对象,例如int,bool,string等,这些哪来??添加个命名空间:xmlns:sys="clr-namespace:System;assembly=mscorlib"然后所有系统类型都在sys命名空间上了,如果需要创建自定义类型实例,那么,,同理,引用你那个自定义类型的命名空间进xaml中。
说了一下理论,下面来实际做点事情,有意思的事情:
步骤1.准备数据源
这一步需要做的是,新建一个数据提供类,然后在类中创建一个方法来返回数据(静态或者不是静态都行).
我准备了这一个数据源,构造函数和方法都需要传入参数,有两个数据列表,MyColorsList是返回所有颜色中10到20位,SystemColorsList中是所有系统颜色,通过GetColors方法的参数控制返回哪一个。好了数据源准备好了,是时候镶嵌到ObjectDataProvider中去了。
步骤2.配置ObjectDataProvider
把两个接口(MethodName和ObjectType)接好,然后接口上面的输入器提供好实例。一切准备妥当。下一步是使用
步骤3.使用亲爱的ObjectDataProvider
绑定Source到ItemsSource上面,有一个有意思的地方就是通过绑定设定SelectedValue的值,绑定自己的ItemsSource的地3个子数据.
下面看效果
即使不用运行,数据一览无余。
(WPF强大啊)
然后就能使用这些数据绑定到文字,动态改变颜色了~
那么如果需要绑定枚举怎么办?例如系统定义的枚举,例如HorizontalAlignment。Enum类中有一个方法叫GetValues,这个方法
接收一个枚举类型,返回枚举内容的数组,那么运用上面的知识就很容易了。这里的主要难题就是提供的参数不是普通实例,而是类型,怎么办?使用x命名空间的类型扩展点,提供类型名字就能创建一个类型实例。
OK,使用起来也一样的,绑定到ItemsSource中去吧。
-------------------------------------- 实战-----------------------------------------------
下面做一个小东西玩一下:字符计数器
整体:
计数器我通过ObjectDataProvider提供给结果绑定。
这里先说下大概思路:ObjectDataProvider中两个接口接收计数器类型和计数方法,计数方法接收两个参数,一个就是内容(绑定到下面的TextBox中,观察修改),一个就是字符(绑定到上面的textbox中,观察修改),结果就绑定到结果那里。
下面看代码实现:
计数器类和方法,很简单
前台数据提供器:
两个转换器,一个用来将得到的结果(int类型)转换成String输出到Text中,一个就是用户输入的搜索字符串转变成字符传入到方法中被使用的。
前台代码给出:
这里需要注意的是绑定到ObjectDataProvider中的MethodParameters[1],并且设置BindsDirectlyToSource才能绑定带参数列表。其他的都简单了。
相关文章推荐
- WPF数据提供者XmlDataProvider
- WPF采用ObjectDataProvider绑定数据
- WPF中使用ObjectDataProvider绑定方法
- WPF中的binding(八)- 使用ObjectDataProvider对象作为Binding的Source
- WPF中使用ObjectDataProvider绑定方法
- MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)
- WPF中使用ObjectDataProvider绑定方法
- WPF(Binding of ObjectDataProvider)
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定之二:使用外部URL的XML文件)
- WPF使用 ObjectDataProvider 为方法作为绑定数据源
- WPF之Binding基础九 使用ObjectDataProvider作为Binding的源
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)
- WPF ObjectDataProvider的使用-只能检索用
- 用ObjectDataProvider绑定方法,用IValueConverter实现数据类型转换,重载ValidationRule实现数据验证,BindsDirectlyToSource等
- WPF(Binding of ObjectDataProvider)
- 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source
- 讲一讲ASP处理数据用的组件ADO (ActiveX Data Object)
- WPF中使用XmlDataProvider做控件绑定
- ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
- 使用IsLine FrameWork开发ASP.NET程序之二—使用DataProvider 访问数据 (上)