.NEt专家博客!
【李会军】一步一步学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:双向绑定,在任何时候都可以同时更新源数据和目标。
Jesse Liberty举 的例子非常的形象,使用Silverlight开发一个在线书店,显示书籍的书名、作者等信息,使用OneTime模式,这些数据一般不会发生变化的;显 示价格信息时使用OneWay模式,因为管理员可能会在一天内调整价格;显示书籍的剩余数量时用TwoWay模式,数量随着用户的订购会随时发生变化,即 目标和源数据都要进行更新。
简单数据绑定
在本示例中我们将做一个简单的数据绑定,用来显示用户信息,XAML如下:
<Gridx:Name="LayoutRoot"Background="#46461F">ITPUB个人空间!b1}U d#kRed
<Grid.RowDefinitions>ITPUB个人空间D6QJ"u#u:KyF
<RowDefinitionHeight="160"></RowDefinition>ITPUB个人空间,xEV?aPY[
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间y;p t*tT Lrc8j
<RowDefinitionHeight="40"></RowDefinition>
J^,_Uw-[ x0</Grid.RowDefinitions>
+Z4\0?(g.o4i#HDI0<Grid.ColumnDefinitions>
@gX7Pba/?&J9A.e0<ColumnDefinitionWidth="150"></ColumnDefinition>
X!E#E}4M%Y2Bx0<ColumnDefinitionWidth="*"></ColumnDefinition>ITPUB个人空间'CNtz@X/|7V_6E
</Grid.ColumnDefinitions>
}.h5g"iBD s0<ImageSource="terrylee.jpg"Width="78"Height="100"ITPUB个人空间&nD&Tb_|P ZN
HorizontalAlignment="Left"Grid.Row="0"Grid.Column="1"/>ITPUB个人空间8d {!U.S B
<TextBlockForeground="White"FontSize="18"Text="姓名:"
,V|to9Uj4P0Grid.Row="1"Grid.Column="0"HorizontalAlignment="Right"/>ITPUB个人空间/F,KXu2x5L*S
<TextBlockx:Name="lblName"Foreground="White"FontSize="18"ITPUB个人空间[H5[ e;S
Grid.Row="1"Grid.Column="1"HorizontalAlignment="Left"/>ITPUB个人空间"?.x?)c VD
<TextBlockForeground="White"FontSize="18"Text="位置:"ITPUB个人空间g$@w]^ z0b ^n
Grid.Row="2"Grid.Column="0"HorizontalAlignment="Right"/>
(pn)k,V"IVM0<TextBlockx:Name="lblAddress"Foreground="White"FontSize="18"ITPUB个人空间tQdGUB;d6sr
Grid.Row="2"Grid.Column="1"HorizontalAlignment="Left"/>
2z5_$n#t%R-^q:Ea'{0</Grid>
添加一个简单User类,它具有Name和Address两个属性:
public classUser
N7Ve v)HB d,M&m0{
%?-@"dv3o S0public stringName {get;set; }ITPUB个人空间D#fyoD'hz)tdZ
ITPUB个人空间,],e"k |d5~
public stringAddress {get;set; }
[,|o8C;O5U x0}
使用绑定句法{Binding Property}进行数据绑定,注意下面的两个TextBlock控件Text属性:
<Gridx:Name="LayoutRoot"Background="#46461F">ITPUB个人空间8o$E2H0|c4K(r,Z
<Grid.RowDefinitions>
:}#bo-]E fz'ra y Y0<RowDefinitionHeight="160"></RowDefinition>ITPUB个人空间'W*DJ7LF P V)_
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间)}l8tv(F%en)fe+U
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间 E(v7|*ctW
</Grid.RowDefinitions>