博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binding基础知识(整理)
阅读量:4941 次
发布时间:2019-06-11

本文共 1853 字,大约阅读时间需要 6 分钟。

程序的本质是数据加算法,

算法的分布a.数据库内部 b.读取和写回数据 c.业务逻辑 d.数据展示 e.界面与逻辑的交互

ab稳定,c与客户需求关系紧密(开发核心).d,e负责UI与逻辑的交互.

WPF让展示层处于逻辑层的从属地位.关键是引用了Data Binding以及与之配套的Dependency Property系统和DataTemplate

 

Binding源指数据源,一般是逻辑层的对象(object(后台),ElementName(Xaml)).数据通过属性暴露给外界.

Source的对象:

1.把普通CLR类型单个对象指定为Source:.NET Framework自带类型的对象和用户自定义类型的对象.

2.把普通CLR集合类型对象指定为Source:包括数组,List<T>,ObservableCollection<T>等集合类型.一般把控件的ItemsSource属性使用Binding关联到一个集合对象上.例如"ItemSource=DefaultView;"(DefaultView属性是一个DataView类型的对象,DataView实现了IEnumerable接口,所以可以直接赋值给ItemSource属性)或者直接将集合的对象赋值给ItemSource

ItemTemplate属性的类型是DataTemplate

3.ADO.NET数据对象.包括DataTableDataView:是一张DataTable的虚拟视图   ,主要用来显示数据的 

4.使用XmlDataProviderXML数据指定为source:XML作为标准的数据存储和传输格式.一些WPF控件是级联式的(TreeViewMenu),我们可以把树状结构的XML数据作为源指定给与之关联的Binding.

5.依赖对象:依赖对象不仅可以作为Binding的目标,也可以作为Binding的源.依赖属性可以作为BindingPath

6.容器的DataContext(Binding的默认行为)设置Binding,只设置Path而不设置Source,Binding会自己去寻找Source.(会沿着控件树一层层往外找,直到找到带有Path指定属性的对象为止)

7.ElementName.通过对象的Name属性找到对象.

8.RelativeSource属性:当空间需要关注自己的,自己的容器或者自己元素内部的某个值

9.ObjectDataProvider对象:数据源的数据通过方法暴露给外界的时候.

10,通过LINQ检索得到的数据对象作为Binding的源.

目标(Target)指UI层的控件对象

UI上的元素关心的属性称为Binding的路径(Path),即对象上有多个属性,指定所关心的属性.索引器也能作为Path来使用.当集合元素的属性仍然是一个集合,可以一路斜下去.P91 Bingding源本身就是数据且不需要Path来指明.XAML可以没有path,C#中写成"SetBinding(TextBlock.TextProperty,new Binding("."){Source=xxx})"

让数据源的类实现System.ComponentModel名称空间中的INotifyPropertyChanged接口

 

SetBinding(DependencyProperty, BindingBase)

BindingUpdateSourceTrigger属性.可取值PropertyChanged,LostFocus,Explicit,Default

 

Binding的数据校验.ValidationRule.ValidationRulesbinding的属性

实施.首先派生一个ValidationRule类。重写Validata方法。(规定校验范围)

在窗体构造器中建立Binding

ValidationRule类中ValidatesOnTargetUpdatad=true。当目标(UI层的控件)发生变化时,会影响数据源

 

DataContext是一个依赖属性.用法:

1.UI上多个控件都是用Binding关注同一对象时.

2.source的对象不能被直接访问的时候.最外层容器的DataContext相当于数据制高点.只要把元素放上去,别的元素就能看见.

转载于:https://www.cnblogs.com/kevin21/p/5049039.html

你可能感兴趣的文章
mac下管理论文的工具
查看>>
POJ3122Pie(二分)
查看>>
WF+WCF+WPF第二天--模拟超市收银
查看>>
爬取贴吧好看的桌面图片 -《狗嗨默示录》-
查看>>
[转]这13个开源GIS软件,你了解几个?
查看>>
Shell批量启动、关闭tomcat
查看>>
C++成员函数的重载、覆盖与隐藏【转载】
查看>>
网站开发技能图谱
查看>>
4.27随笔
查看>>
CSS实例:图片导航块
查看>>
poj1860 Currency Exchange(spfa判断正环)
查看>>
SQL CHECK 约束&Case when 的使用方法
查看>>
[整理]HTTPS和SSL证书
查看>>
[转载] Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
查看>>
水晶苍蝇拍:聊聊估值那些事儿——“指标”背后的故事 (2011-11-01 14:58:32)
查看>>
3.每周总结
查看>>
应用提交 App Store 上架被拒绝
查看>>
Android实现异步处理 -- HTTP请求
查看>>
数据清空js清空div里的数据问题
查看>>
Fortran中的指针使用
查看>>