文/Terrylee 出处/博客园
概述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如下:
<Grid x:Name="LayoutRoot" Background="#46461F">
<Grid.RowDefinitions>
<RowDefinition Height="160"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Source="terrylee.jpg" Width="78" Height="100"
Horiz Grid.Row="0" Grid.Column="1"/>
<TextBlock Foreground="White" F Text="姓名:"
Grid.Row="1" Grid.Column="0" Horiz/>
<TextBlock x:Name="lblName" Foreground="White" F
Grid.Row="1" Grid.Column="1" Horiz/>
<TextBlock Foreground="White" F Text="位置:"
Grid.Row="2" Grid.Column="0" Horiz/>
<TextBlock x:Name="lblAddress" Foreground="White" F
Grid.Row="2" Grid.Column="1" Horiz/>
</Grid>
添加一个简单User类,它具有Name和Address两个属性:
public class User
{
public string Name { get; set; }
public string Address { get; set; }
}
使用绑定句法{Binding Property}进行数据绑定,注意下面的两个TextBlock控件Text属性:
<Grid x:Name="LayoutRoot" Background="#46461F">
<Grid.RowDefinitions>
<RowDefinition Height="160"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Source="terrylee.jpg" Width="78" Height="100"
Horiz Grid.Row="0" Grid.Column="1"/>
<TextBlock Foreground="White" F Text="姓名:"
Grid.Row="1" Grid.Column="0" Horiz/>
<TextBlock x:Name="lblName" Foreground="White" F
Grid.Row="1" Grid.Column="1" Horiz
Text="{Binding Name}"/>
<TextBlock Foreground="White" F Text="位置:"
Grid.Row="2" Grid.Column="0" Horiz/>
<TextBlock x:Name="lblAddress" Foreground="White" F
Grid.Row="2" Grid.Column="1" Horiz
Text="{Binding Address}"/>
</Grid>
指定数据源,注意这里是创建一个User的实例并赋值后,把user实例绑定到了TextBlock的DataContext上,而不是向之前我们所做的示例中那样,直接指定Text属性:
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
User user = new User();
user.Name = "TerryLee";
user.Address = "中国 天津";
lblName.DataContext = user;
lblAddress.DataContext = user;
}
运行示例后,可以看到:

附件:
您所在的用户组无法下载或查看附件上面这种数据绑定模式,只是显示数据而不对数据做任何修改,默认的绑定模式是一次绑定OneTime。
| 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。 |