Silverlight数据绑定引擎

2016-08-20 10:34:16来源:http://6685704.blog.51cto.com/6675704/1150208作者:windows_phone人点击




Silverlight数据绑定引擎




(1)Silverlight中数据绑定基于Silverlight数据绑定引擎,


(2)该绑定引擎实现从UI元素到CLR源数据对象之间的关联,创建并维护两者之间的数据通道。


(3)通过该绑定引擎,将CLR源数据对象包含的数据反映到UI元素,并可以将UI中对数据的更改反馈回源数据对象。





一次数据绑定包含两个最基本的要素:



(1) 绑定目标(FrameworkElement的依赖项属性)


(2) 绑定源(对象的属性)



mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext">


mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

绑定源



border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

即数据的来源,可以是任意的CLR对象,通常实际需要的是该对象的某一个特定属性.





border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt">

绑定目标



none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

显示数据的UI元素,可以是任何FrameworkElement类型的对象,实际绑定的也是该对象的某一个特定属性。





border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt">

绑定模式



none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

主要决定数据流的方向,可以是单向或双向。





border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt">

值转换器



none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

需要时用以进行数据类型或格式的转换






绑定引擎所属的这些信息,主要有System.Windows.Data 中的Binding对象来提供。





以下是Binding对象的几个重要属性:





mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext">


mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

(1)path



border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

指定绑定源对象中用以提供数据的属性,通过属性路径语法来表示





border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt">

(2)Mode



none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

指示数据绑定模式,可以为OneTime、OneWay、TwoWay





border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt">

(3)Converter



none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

值转换器对象,需要时设置,必须是一个IValueConverter接口类型的对象





border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt">

(4)设置绑定源



none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">

有四种方法:


1、 Source:表示绑定源对象。


2、 RelativeSource:通过指定绑定源相对于绑定目标的位置来标识绑定源


3、 ElementName:当绑定源也是UI对象时,获取或设置其名称用以标识绑定源


4、 通过设置UI元素的DataContext属性来指定绑定源,上下文的表示方法






绑定目标通过UI元素的SetBinding方法来进行设置(当然也可以在XAML中直接指定)。


三种模式的数据绑定。








OneTime




单向一次绑定,在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新(只在绑定创建时更新一次数据源,之后绑定目标的显示将与绑定源的变化无关)






OneWay




单向绑定,在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据(绑定创建时及之后绑定源的每一次变化都会更新绑定目标。)






TwoWay




双向绑定,在任何时候都可以同时更新源数据和目标。(数据在绑定源与绑定目标之间可相互流动,源与目标任一方的变化都会立即通知到对方并引发对方的更新,双方是实时同步的。)






注意:当选择OneWay或TwoWay模式时,为了是绑定源的变化能实时通知到绑定目标,源对象中必须实现INotifyPropertyChanged接口。也就是绑定目标的显示与绑定源同步,必须满足两个条件:


(1)选择OneWay或TwoWay模式


(2)绑定源实现INotifyPropertyChanged接口






publicclassEmployee:INotifyPropertyChanged


{


/*public int Number { get; set; }//员工号


public string Name { get; set; }//姓名


public string Sex { get; set; }//性别


public int BirthYear { get; set; } //出生年份*/


publiceventPropertyChangedEventHandlerPropertyChanged;


privateintnumber;


publicintNumber


{


get{returnnumber; }


set


{


this.number =value;


INotifyPropertyChanged("Number");


}


}


privatestringname;


publicstringName


{


get{returnname; }


set


{


this.name =value;


INotifyPropertyChanged("Name");


}


}


//sex birthYear相同代码


privatevoidINotifyPropertyChanged(stringpropertyName)


{


//throw new NotImplementedException();


if(PropertyChanged !=null)


{


PropertyChanged(this,newPropertyChangedEventArgs(propertyName));


}


}


}









最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台