(部分内容参考MSDN文档)
数据绑定是在应用程序UI与业务逻辑之间建立连接的过程。通过数据绑定的方式实现了后台数据和前台UI元素的关联, 为用户提供了更好地交互体验。
数据绑定一般有以下几种体现方式:
1.在应用的控件中进行简单的显示数据。
2.在应用中以列表的形式进行显示一些数据,比如一个业务对象或业务对象的集合。
3.在应用中对用户从列表中选择的项目,在另一个控件中对该项目的进行详细信息展示。
数据绑定主要包含两大块:绑定源和绑定目标。
绑定目标:绑定目标需要绑定数据源时需要借助绑定对象来完成,即Binding。这个对象有三个重要属性(它们当然与绑定源,绑定目标等有关系,毕竟它是两者的中介):a、Source:字面意思就能知道指的是绑定源对象 b、RelativeSource:指定绑定源相对于绑定目标的位置来标识绑定源 c、ElementName,绑定源也是UI对象时候,设置其绑定源的的名称即可。说了这三种属性,其主要的目的就是找到绑定源,因为Binding一般会写在绑定目标中,这样只要找到绑定源就好了,这样就能把两者联系起来。这三个属性的功能就是找到绑定源。所以这三种方式指定任意一种即可,只要让中介binding找到绑定源就好了。不过事实上我们在写程序的过程中很少这么用的,微软提供了一个更加通用的方法就是:通过设置UI元素的DataContext属性来制定绑定源,这样以上三个属性都无需指定,下文我会在做些介绍。
绑定源:绑定数据的来源,一般选择比较多,比如本地数据库,远程数据库,云端数据等。
绑定目标:即从绑定源获得的数据绑定到的UI元素,绑定的目标通常是控件属性。
绑定模式:这个也很好理解,a、OneTime:仅仅一次绑定,在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。简单理解为:绑定源仅仅把数据给绑定目标一次后,两者变得毫不相关。b、OneWay:单向绑定,在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。简单理解为数据源能把数据更新到绑定目标,而绑定目标的变化却不能影响到数据源。 c、TwoWay:双向绑定,在任何时候都可以同时更新源数据和目标。前两种绑定方式理解了这个相对理解就容易,通俗的讲就是绑定源和绑定目标是互通的,无论谁的变化都能够影响到对方,比如绑定源数据有变化就能马上把绑定目标的数据更新,反之一样。
绑定对象:当绑定目标需要绑定数据源时该借助什么呢?绑定对象来完成,可以比喻成中介,起了个名字:Binding。这个对象有三个重要属性(它们当然与绑定源,绑定目标等有关系,毕竟它是两者的中介):a、Source:字面意思就能知道指的是绑定源对象 b、RelativeSource:指定绑定源相对于绑定目标的位置来标识绑定源 c、ElementName,绑定源也是UI对象时候,设置其绑定源的的名称即可。说了这三种属性,其主要的目的就是找到绑定源,因为Binding一般会写在绑定目标中,这样只要找到绑定源就好了,这样就能把两者联系起来。这三个属性的功能就是找到绑定源。所以这三种方式指定任意一种即可,只要让中介binding找到绑定源就好了。不过事实上我们在写程序的过程中很少这么用的,微软提供了一个更加通用的方法就是:通过设置UI元素的DataContext属性来制定绑定源,这样以上三个属性都无需指定,下文我会在做些介绍。
Path(路径):Binding对象的一个属性,来指示绑定源对象中用以提供数据的属性。
建立数据绑定
1.在xaml代码中建立数据绑定
(1)定义源对象。
(2)在 XAML 中创建对源对象的命名空间的引用。
(3)在“Resources”节中创建源对象的实例。
(4)通过设置 Source 属性或 DataContext 属性绑定到源对象。 该元素的所有子级都继承 DataContext
2.在属性面板中建立数据绑定
3.使用代码创建绑定
(1)添加 System.Windows.Data 命名空间。
(2)定义源对象。
(3)创建要绑定到的 FrameworkElement。
(4)创建源对象的实例。
(5)创建绑定对象。
(6)对绑定对象设置绑定属性。
(7)通过设置 Source 属性或 DataContext 属性来设置绑定源。该元素的所有子级都继承 DataContext。
数据绑定的模式
每个绑定都有一个模式属性, 共有三种模式的绑定:
(1)OneTime模式:目标空间的属性只更新一次,适用于只显示数据而不进行数据的更新的数据绑定。
(2)OneWay模式:数据对象的值会同步到目标控件的属性,每当源数据发生变化时,目标控件也会更新。当目标控件发生变化时,源数据不会发生改变。
(3)TwoWay模式:绑定目标和绑定源无论哪个发生变化,双方都会同时更新数据。