Silverlight 2 数据绑定演示程序(附源代码下载)
Silverlight 2 数据绑定演示程序(附源代码下载)
数据绑定(Data Binding)是用户界面UI和业务对象或其它数据提供者(data provider)的连接。用户界面对象称为目标,数据提供者成为数据源。
数据绑定帮主隔离应用程序的用户界面层和其他层,如业务对象、数据等等。通过绑定对象,实现用户界面层和底层的隔离,其中有2种模式:one-way和two-way。one-way 绑定仅仅显示数据源的数据,two-way 绑定则在更新用户界面的数据时,会同步更新数据源。
下面创建一个Silverlight 2 应用程序,绑定到业务对象,其中Book.cs 文件表示业务层(Business Layer)。如果你希望业务对象改变时,自动更新UI,业务对象必须实现INotifyPropertyChanged 接口。这个接口需要类有一个类型为PropertyChangedEventHandler事件。当绑定到UI控件上的任何属性Property 被赋值或清除时,必须触发PropertyChanged事件。
下面看看Book.cs 文件的部分代码:
public class Book : INotifyPropertyChanged
Book类实现INotifyPropertyChanged 接口。
下面的代码是对Title属性的定义。在set中,会触发PropertyChanged事件。
// implement the required event for the interface
public event PropertyChangedEventHandler PropertyChanged;
public string Title
{
get { return bookTitle; }
set
{
bookTitle = value;
NotifyPropertyChanged("Title");
}
}
// factoring out the call to the event
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
在xaml页面文件中,每一个绑定的字段均使用Binding语法,关键字Binding跟随一个公有属性(public property),且属性绑定到控件,同时设置Mode,默认为OneWay。示例代码如下:
<TextBlock x:Name="AuthorURL"
Text="{Binding AuthorURL, Mode=OneWay }"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
Grid.Row="5" Grid.Column="1"
Style="{StaticResource TextBlockStyle}"/>
DataContext
上面的实例代码表示AuthorURL控件绑定到AuthorURL属性,但是没有告诉它绑定到哪一个对象。DataContext 对象是一个特定的book实例,在运行时指定,并赋值给Grid的DataContext属性,这样,数据绑定控件就知道从book实例中获取AuthorURL属性值了。
DataContext对象可以沿着UI树继承,这样,当我们设置Grid对象的DataContext属性后,所有在Grid内的其他控件将可以访问DataContext(除非这些控件有自己的DataContext定义)。看看示例代码:
void Page_Loaded(object sender, RoutedEventArgs e)
{
Book book = new Book();
InitializeProgramming(book);
LayoutRoot.DataContext = book;
}
控件样式Styling Controls
在Silverlight中有2种方式设置控件的样式:(1)直接在控件中应用样式Applying Styles Inline。示例代码如下:
<TextBlock x:Name="TitlePrompt" Text="Title: " VerticalAlignment="Bottom"
HorizontalAlignment="Right" Grid.Row="0" Grid.Column="0"
FontFamily="Comic Sans MS"
FontSize="16"
FontWeight="Bold"
Foreground="Red" />
(2)创建并应用Style对象
Style对象是可以重用的资源,你可以应用到任何container,或者通过放置在App.xaml 的Resources节,应用到整个项目。
<Application.Resources>
<Style TargetType="TextBlock" x:Key="TextBlockStyle">
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="FontFamily" Value="宋体" />
<Setter Property="FontSize" Value="16" />
<Setter Property="Foreground" Value="Blue" />
</Style>
</Application.Resources>
范例程序运行界面:
本范例程序来自于《Programming .NET 3.5》,欢迎下载交流。