SilverLight学习笔记--Silverlight之数据绑定初探

  数据绑定(Data Binding)是用户界面UI和业务对象或其它数据提供者(data provider)的连接。用户界面对象称为目标,数据提供者成为数据源。
  数据绑定帮助隔离应用程序的用户界面层和其他层,如业务对象、数据等等。通过绑定对象,实现用户界面层和底层的隔离。
  在Silverlight 2中,支持三种模式的数据绑定。

1.OneTime:一次绑定,在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。
2.OneWay:单向绑定,在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。
3.TwoWay:双向绑定,在任何时候都可以同时更新源数据和目标。

 本文只示例一次绑定中的常用问题,至于其它请参看另一篇文章"SilverLight学习笔记--Silverlight中INotifyPropertyChanged 接口在数据绑定中的使用 "
,在这篇文章里比较详细的示范了三类绑定模式的工作情况以及如何使用INotifyPropertyChanged接口实现绑定数据同步。
 下面开始我们的示例。
 新建一个Silverlight应用程序命名:SLDataBinding。
 在这个应用程序中,我们将实现以下示例

 1、如何在xaml文件中通过设置控件元素属性来实现绑定
 
2、如何在后台代码中设置绑定属性
 
3、如何绑定数据集数据源
 
4、如何利用模板进行数据绑定。


 在本例中,我们使用了ListBox来显示数据,对于ListBox的绑定有如下说明:
 如果ListBox中属性设置为 ItemsSource="{Binding Mode=OneWay}",则在此处设置DataContext 即:this.lstPeopleTemple.DataContext = PmyPeople.MyPeople,
 原因是ListBox 通过 ItemsSource 里的数据去填充数据项,所以直接给这个属性赋值是可以的 即:this.lstPeopleTemple.ItemsSource = PmyPeople.MyPeople;
或者,
 通过空绑定语法 {Binding},指定 ItemsSource 属性绑定为数据源的对象本身(未指定绑定路径)。而数据源就是通过 DataContext 获得的,并且这个属性的数据可以从父对象继承下来。
 具体内容见代码部分.
 首先建立程序界面,代码如下:

 

Code

 界面如下图

                         
其次,我们需要建立绑定所需的数据源,在此,我们新建两个类,一个名为Person,一个名为People,
Person类定义如下:

Code

People类定义如下:

Code

Page.xaml.cs全部代码如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using System.Windows.Data; //因为要使用Binding类,所以需要引入此空间

namespace SLDataBinding
{
    
public partial class Page : UserControl
    
{
        
public Page()
        
{
            InitializeComponent();
        }

        
        
如何在xaml文件中通过设置控件元素属性来实现绑定

        
如何在后台代码中设置绑定属性

        
如何绑定数据集数据源

        
如何利用模板进行数据绑定。
    }

}


程序运行效果如下:
                              

 
前往:Silverlight学习笔记清单

本文程序在Silverlight2.0和VS2008环境中调试通过。本文参照了部分网络资料,希望能够抛砖引玉,大家共同学习。
(转载本文请注明出处)

posted @ 2009-08-31 07:43  wsdj  阅读(2472)  评论(1编辑  收藏  举报