基于Silverlight的Windows Phone开发中的数据绑定,使数据的呈现和交互变得更为便捷,该数据绑定实现了UI元素和数据源对象之间的关联,使数据可以在两者之间创建并维护数据通道。在绑定建立之后,如果数据出现更改,则绑定到该数据的UI元素会自动反映更改,同样,用户在UI元素中所做的更改也可以在数据对象中反映出来。
通过设置Binding对象的Source属性可以实现基本的数据绑定,但是观察上面的代码不难发现,对于每个绑定对象都要设置一次绑定源显然是冗余的,在绑定对象比较多的情况下尤其繁琐。
鉴于以上情况,Silverlight中提供了另外一种设置数据源的方式,及通过UI元素的数据上下文Data Context属性来指定数据源。这是一种上下文有关的确定绑定源的方案。一旦为一个UI元素指定了DataContext属性,则其所有子元素都将继承该属性,与其子元素关联的所有数据绑定在没有另行制定Souce 和DataContext的情况下,都将默认使用该属性指定的对象作为绑定源。
这样,在进行数据绑定时,对于某UI元素指定DataContext后就可以在其所有下级UI元素中使用以该DataContext为绑定源的绑定。实际上在通常情况下的用法是,先用DataContext属性指定高层UI元素的数据上下文,然后对于特殊的子元素再另行指定绑定源。
以下代码所示,可以简单地通过指定的TextBox控件的父元素Canvas控件的Context属性来指定数据源。
C# Code
canvas2.DataContext=employee;
Binding bdNumber=new Binding()
bdNumber.Path=new Binding()
txbNuber2.SetBinding(TextBox.TextProperty,bdNumber);
Binding bdName=new Binding();
bdName.Path=new PropertyPath("Name");
txbName2.SetBinding(TextBox.TextProperty,bdName);