一步一步学Silverlight 2系列11.docx
- 文档编号:7903725
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:10
- 大小:132.95KB
一步一步学Silverlight 2系列11.docx
《一步一步学Silverlight 2系列11.docx》由会员分享,可在线阅读,更多相关《一步一步学Silverlight 2系列11.docx(10页珍藏版)》请在冰豆网上搜索。
一步一步学Silverlight2系列11
一步一步学Silverlight2系列(11):
数据绑定
概念
Silverlight2Beta1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言VisualBasic,VisualC#,IronRuby,Ironpython,对JSON、WebService、WCF以及Sockets的支持等一系列新的特性。
《一步一步学Silverlight2系列》文章带您快速进入Silverlight2开发。
本文为系列文章第十一篇,主要介绍Silverlight2中的数据绑定。
数据绑定模式
在Silverlight2中,支持三种模式的数据绑定。
1.OneTime:
一次绑定,在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。
2.OneWay:
单向绑定,在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。
3.TwoWay:
双向绑定,在任何时候都可以同时更新源数据和目标。
JesseLiberty举的例子非常的形象,使用Silverlight开发一个在线书店,显示书籍的书名、作者等信息,使用OneTime模式,这些数据一般不会发生变化的;显示价格信息时使用OneWay模式,因为管理员可能会在一天内调整价格;显示书籍的剩余数量时用TwoWay模式,数量随着用户的订购会随时发生变化,即目标和源数据都要进行更新。
简单数据绑定
在本示例中我们将做一个简单的数据绑定,用来显示用户信息,XAML如下:
Name="LayoutRoot"Background="#46461F"> HorizontalAlignment="Left"Grid.Row="0"Grid.Column="1"/> " Grid.Row="1"Grid.Column="0"HorizontalAlignment="Right"/> Name="lblName"Foreground="White"FontSize="18" Grid.Row="1"Grid.Column="1"HorizontalAlignment="Left"/> " Grid.Row="2"Grid.Column="0"HorizontalAlignment="Right"/> Name="lblAddress"Foreground="White"FontSize="18" Grid.Row="2"Grid.Column="1"HorizontalAlignment="Left"/> 添加一个简单User类,它具有Name和Address两个属性: publicclassUser { publicstringName{get;set;} publicstringAddress{get;set;} } 使用绑定句法{BindingProperty}进行数据绑定,注意下面的两个TextBlock控件Text属性: Name="LayoutRoot"Background="#46461F"> HorizontalAlignment="Left"Grid.Row="0"Grid.Column="1"/> " Grid.Row="1"Grid.Column="0"HorizontalAlignment="Right"/> Name="lblName"Foreground="White"FontSize="18" Grid.Row="1"Grid.Column="1"HorizontalAlignment="Left" Text="{BindingName}"/> " Grid.Row="2"Grid.Column="0"HorizontalAlignment="Right"/> Name="lblAddress"Foreground="White"FontSize="18" Grid.Row="2"Grid.Column="1"HorizontalAlignment="Left" Text="{BindingAddress}"/> 指定数据源,注意这里是创建一个User的实例并赋值后,把user实例绑定到了TextBlock的DataContext上,而不是向之前我们所做的示例中那样,直接指定Text属性: privatevoidUserControl_Loaded(objectsender,RoutedEventArgse) { Useruser=newUser(); user.Name="TerryLee"; user.Address="中国天津"; lblName.DataContext=user; lblAddress.DataContext=user; } 运行示例后,可以看到: 上面这种数据绑定模式,只是显示数据而不对数据做任何修改,默认的绑定模式是一次绑定OneTime。 单向绑定示例 如果需要在数据源发生变化时能够通知UI进行相应的更新,即使用单向绑定OneWay或者双向绑定TwoWay,则业务实体需要实现接口INotifyPropertyChanged。 在本示例中,我们加上一个更新按钮,当单击按钮时更新user实例的属性值,会看到界面上的数据也会发生变化。 修改一下User类,使其实现INotifyPropertyChanged接口。 publicclassUser: INotifyPropertyChanged { publiceventPropertyChangedEventHandlerPropertyChanged; privatestring_name; publicstringName { get{return_name;} set { _name=value; if(PropertyChanged! =null) { PropertyChanged(this,newPropertyChangedEventArgs("Name")); } } } privatestring_address; publicstringAddress { get{return_address;} set { _address=value; if(PropertyChanged! =null) { PropertyChanged(this,newPropertyChangedEventArgs("Address")); } } } } 修改数据绑定模式,使用单向绑定OneWay模式,如{BindingAddress,Mode=OneWay} Name="LayoutRoot"Background="#46461F"> HorizontalAlignment="Left"Grid.Row="0"Grid.Column="1"/> Name="btnUpdate"Width="100"Height="40" Content="Update"Click="btnUpdate_Click"/> " Grid.Row="1"Grid.Column="0"HorizontalAlignment="Right"/> Name="lblName"Foreground="White"FontSize="18" Grid.Row="1"Grid.Column="1"HorizontalAlignment="Left" Text="{BindingName,Mode=OneWay}"/> " Grid.Row="2"Grid.Column="0"HorizontalAlignment="Right"/> Name="lblAddress"Foreground="White"FontSize="18" Grid.Row="2"Grid.Column="1"HorizontalAlignment="Left" Text="{BindingAddress,Mode=OneWay}"/> 编写事件处理程序,为了演示把user声明为一个全局的,并在按钮的单击事件中修改其属性值: publicpartialclassPage: UserControl { publicPage() { InitializeComponent(); } Useruser; privatevoidUserControl_Loaded(objectsender,RoutedEventArgse) { user=newUser(); user.Name="TerryLee"; user.Address="中国天津"; lblName.DataContext=user; lblAddress.DataContext=user; } privatevoidbtnUpdate_Click(objectsender,RoutedEventArgse) { user.Name="李会军"; user.Address="ChinaTianjin"; } } 运行后如下所示: 单击Update按钮后: 绑定到列表 下面再看一个绑定到列表的简单例子,一般都会使用DataGrid或者ListBox来进行列表数据的显示。 下面的示例我们显示一个文章列表: Width="240"Height="36"Background="Orange" Margin="20000"HorizontalAlignment="Left"> HorizontalAlignment="Left"VerticalAlignment="Center" Margin="20000"> Name="PostList"Grid.Column="0"Grid.Row="1" Margin="40101010" HorizontalContentAlignment="Left"VerticalContentAlignment="Bottom" ItemsSource="{BindingPosts}"> 编写一个简单的业务类: publicclassBlog { publicList } 初始化集合数据并进行绑定 privatevoidUserControl_Loaded(objectsender,RoutedEventArgse) { Blogblog=newBlog(); blog.Posts=newList { "一步一步学Silverlight2系列(10): 使用用户控件", "一步一步学Silverlight2系列(9): 使用控件模板", "一步一步学Silverlight2系列(8): 使用样式封装控件观感", "一步一步学Silverlight2系列(7): 全屏模式支持" }; PostList.DataContext=blog; } 最终运行的结果如下所示: 当然我们也可以使用ListBox的ItemsSource属性进行绑定, 结束语 本文简单介绍了Silverlight2中的数据绑定,你可以从这里下载文章示例代码。 下一篇: 一步一步学Silverlight2系列(12): 数据与通信之WebClient 作者: TerryLee 出处: 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 Tag标签: Silverlight
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步一步学Silverlight 2系列11 一步一步 Silverlight 系列 11