您的位置:首页 > 编程语言

Silverlight 2 数据绑定演示程序(附源代码下载)

2009-03-11 08:21 811 查看
[align=center]Silverlight 2 数据绑定演示程序(附源代码下载)[/align]

数据绑定(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事件。

[align=left] // implement the required event for the interface[/align]
[align=left] public event PropertyChangedEventHandler PropertyChanged;[/align]

[align=left] public string Title[/align]
[align=left] {[/align]
[align=left] get { return bookTitle; }[/align]
[align=left] set[/align]
[align=left] {[/align]
[align=left] bookTitle = value;[/align]
[align=left] NotifyPropertyChanged("Title");[/align]
[align=left] } [/align]
}

[align=left] // factoring out the call to the event[/align]
[align=left] public void NotifyPropertyChanged(string propertyName)[/align]
[align=left] {[/align]
[align=left] if (PropertyChanged != null)[/align]
[align=left] {[/align]
[align=left] PropertyChanged(this, new PropertyChangedEventArgs(propertyName));[/align]
[align=left] }[/align]
[align=left] [/align]
}

在xaml页面文件中,每一个绑定的字段均使用Binding语法,关键字Binding跟随一个公有属性(public property),且属性绑定到控件,同时设置Mode,默认为OneWay。示例代码如下:
[align=left] <TextBlock x:Name="AuthorURL"[/align]
[align=left] Text="{Binding AuthorURL, Mode=OneWay }" [/align]
[align=left] VerticalAlignment="Bottom"[/align]
[align=left] HorizontalAlignment="Left"[/align]
[align=left] Grid.Row="5" Grid.Column="1"[/align]
Style="{StaticResource TextBlockStyle}"/>

DataContext
上面的实例代码表示AuthorURL控件绑定到AuthorURL属性,但是没有告诉它绑定到哪一个对象。DataContext 对象是一个特定的book实例,在运行时指定,并赋值给Grid的DataContext属性,这样,数据绑定控件就知道从book实例中获取AuthorURL属性值了。

DataContext对象可以沿着UI树继承,这样,当我们设置Grid对象的DataContext属性后,所有在Grid内的其他控件将可以访问DataContext(除非这些控件有自己的DataContext定义)。看看示例代码:
[align=left] void Page_Loaded(object sender, RoutedEventArgs e)[/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] Book book = new Book();[/align]
[align=left] InitializeProgramming(book);[/align]
[align=left] LayoutRoot.DataContext = book;[/align]
}

控件样式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节,应用到整个项目。
[align=left]<Application.Resources>[/align]
[align=left]<Style TargetType="TextBlock" x:Key="TextBlockStyle">[/align]
[align=left] <Setter Property="VerticalAlignment" Value="Bottom"/>[/align]
[align=left] <Setter Property="HorizontalAlignment" Value="Right" />[/align]
[align=left] <Setter Property="FontFamily" Value="宋体" />[/align]
[align=left] <Setter Property="FontSize" Value="16" />[/align]
[align=left] <Setter Property="Foreground" Value="Blue" />[/align]
[align=left] </Style>[/align]
</Application.Resources>

范例程序运行界面:



本范例程序来自于《Programming .NET 3.5》,欢迎下载交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐