天天看点

一步一步学Silverlight 2系列(11):数据绑定

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列文章第十一篇,主要介绍Silverlight 2中的数据绑定。

在Silverlight 2中,支持三种模式的数据绑定。

1.OneTime:一次绑定,在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。

2.OneWay:单向绑定,在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。

3.TwoWay:双向绑定,在任何时候都可以同时更新源数据和目标。

在本示例中我们将做一个简单的数据绑定,用来显示用户信息,XAML如下:

<a href="http://11011.net/software/vspaste"></a>

添加一个简单User类,它具有Name和Address两个属性:

使用绑定句法{Binding Property}进行数据绑定,注意下面的两个TextBlock控件Text属性:

指定数据源,注意这里是创建一个User的实例并赋值后,把user实例绑定到了TextBlock的DataContext上,而不是向之前我们所做的示例中那样,直接指定Text属性:

运行示例后,可以看到:

上面这种数据绑定模式,只是显示数据而不对数据做任何修改,默认的绑定模式是一次绑定OneTime。

如果需要在数据源发生变化时能够通知UI进行相应的更新,即使用单向绑定OneWay或者双向绑定TwoWay,则业务实体需要实现接口INotifyPropertyChanged。在本示例中,我们加上一个更新按钮,当单击按钮时更新user实例的属性值,会看到界面上的数据也会发生变化。

修改一下User类,使其实现INotifyPropertyChanged接口。

修改数据绑定模式,使用单向绑定OneWay模式,如{Binding Address, Mode=OneWay}

编写事件处理程序,为了演示把user声明为一个全局的,并在按钮的单击事件中修改其属性值:

运行后如下所示:

单击Update按钮后:

下面再看一个绑定到列表的简单例子,一般都会使用DataGrid或者ListBox来进行列表数据的显示。下面的示例我们显示一个文章列表:

最终运行的结果如下所示:

当然我们也可以使用ListBox的ItemsSource属性进行绑定,

本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67247,如需转载请自行联系原作者