你的位置:首页 > ASP.net教程

[ASP.net教程]Binding基础知识(整理)


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

算法的分布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数据对象.包括DataTable和DataView:是一张DataTable的虚拟视图   ,主要用来显示数据的 

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

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

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)

Binding的UpdateSourceTrigger属性.可取值PropertyChanged,LostFocus,Explicit,Default

 

Binding的数据校验.ValidationRule类.ValidationRules是binding的属性。

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

在窗体构造器中建立Binding

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

 

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

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

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