.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">
C#xLh$B e|-Lj0<Grid.RowDefinitions>ITPUB个人空间,T_6l^9Vh O
<RowDefinitionHeight="160"></RowDefinition>
N ?(TjDz:r&rb0<RowDefinitionHeight="40"></RowDefinition>
,u2u__:EFJ;Jk6T0<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间2Y^%n.ZN'c'y.S#CK0~
</Grid.RowDefinitions>
3N3Vz"nG0<Grid.ColumnDefinitions>
cB6CC,K9H+I0<ColumnDefinitionWidth="150"></ColumnDefinition>ITPUB个人空间_G(u_.M.x
<ColumnDefinitionWidth="*"></ColumnDefinition>
)tG)F%@| d8BHj0</Grid.ColumnDefinitions>
Q;K(p8l7X1V#M0<ImageSource="terrylee.jpg"Width="78"Height="100"ITPUB个人空间g&fQ:v6Qt;V,~ O4}
HorizontalAlignment="Left"Grid.Row="0"Grid.Column="1"/>ITPUB个人空间4Fk0xYxAs B
<TextBlockForeground="White"FontSize="18"Text="姓名:"ITPUB个人空间?D Jv3d w\m
Grid.Row="1"Grid.Column="0"HorizontalAlignment="Right"/>ITPUB个人空间R6j _3^ ly$D2u
<TextBlockx:Name="lblName"Foreground="White"FontSize="18"ITPUB个人空间U%xEYD Y_
Grid.Row="1"Grid.Column="1"HorizontalAlignment="Left"/>ITPUB个人空间`me ~(k-P
<TextBlockForeground="White"FontSize="18"Text="位置:"
r}8n c(ki3{0Grid.Row="2"Grid.Column="0"HorizontalAlignment="Right"/>
%EwO3n,@"_I0<TextBlockx:Name="lblAddress"Foreground="White"FontSize="18"
ek:i'JUB:biH~0Grid.Row="2"Grid.Column="1"HorizontalAlignment="Left"/>
7b }N8e0A9R'j3B0</Grid>
添加一个简单User类,它具有Name和Address两个属性:
public classUser
k8A"W7u:S1C+}V"EM0{
?U-ctK E:J0public stringName {get;set; }ITPUB个人空间y^1h3r1G)Q0m-r1v
ITPUB个人空间 ZN c1oL-a1A#^X}
public stringAddress {get;set; }ITPUB个人空间)w}AO"Ux C6h
}
使用绑定句法{Binding Property}进行数据绑定,注意下面的两个TextBlock控件Text属性:
<Gridx:Name="LayoutRoot"Background="#46461F">ITPUB个人空间xE3G XHo
<Grid.RowDefinitions>ITPUB个人空间%C})Bl%YD'`
<RowDefinitionHeight="160"></RowDefinition>
0oFC3m[0<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间y0h}5J#v].R
<RowDefinitionHeight="40"></RowDefinition>
x$\ Byh"?$m RJ0</Grid.RowDefinitions>
KS(yabOs0<Grid.ColumnDefinitions>
Y7i'tq2T%D0<ColumnDefinitionWidth="150"></ColumnDefinition>ITPUB个人空间(\/jXZdwt5NH
<ColumnDefinitionWidth="*"></ColumnDefinition>ITPUB个人空间F$J8T]{T
</Grid.ColumnDefinitions>