WPF 数据绑定基础

纯理论,可能会枯燥。

.net 技术群: 199281001 ,欢迎加入。

1.目标对象一定是派生自DependencyObject的对象,并且目标属性必须是依赖属性,否则数据绑定操作将会失   败。绑定源对象可以不是依赖对象和依赖属性。

2.定义了依赖属性时,FrameworkPropertyMetadataOptions.NotDataBindable 标志会影响依赖属性的绑定。当改变源对象依赖属性值后,绑定目标可以立即得以更新,开发人员不需要响应事件来手动编写响应代码。

3.移除绑定:开发人员可以通过BindingOperations类的两个静态方法移除绑定。

  <1> ClearAllBindings():从指定的DependencyObject 中移除所有的绑定。

  <2>ClearBinding(): 获取一个依赖属性作为参数。如果该属性存在绑定,则移除绑定。

    这两个方法的适用示例如下。

  BindingOperations.ClearAllBindings(nameTextBox,TextBox.TextProperty);

  BindingOperations.ClearBinding(nameTextBox);

ClearAllBindings()和ClearBinding() 都是派生自DependentyObject类的ClearValue()方法来移除属性的本地值。

4.绑定方向

  <1>OneWay :当源属性发生更改时更新目标属性。

  <2>TwoWay :当源属性发生更改时更新新目标属性,当目标属性发生更改时,同时也更改源属性。

  <3>OneTime :仅当应用程序启动时或DataContext进行更改时更新目标属性。

  <4>OneWayToSource :在目标属性更改时更新源属性。

  <5>Default :使用目标属性的默认Mode 值。

5.绑定更新

   <1>Default :绑定目标属性的默认UpdateSourceTrigger值。 多数依赖项属性的默认值为PropertyChanged,而Text属性的默认值为 LostFocus()。

   <2>PropertyChanged :当绑定的目标属性更改时,立即更新绑定源。

   <3>LostFocus() :当绑定目标元素失去焦点时,更新绑定源。

   <4>Explicit :仅在调用UpdateSource()方法时更新绑定源。

6.绑定到非元素的对象

   <1>Source :指向源对象的引用,也即提供数据对象的引用。

   <2>RelativeSource :指向当前元素自身的对象。允许为目标对象指定一个相对于源对象的目标对象。这不太好理解。

        RelativeSource  Mode属性

           <2.1>PreviousData :允许绑定所显示的数据项列表中以前的数据项(不是包含数据项的控件)。

           <2.2>TemplatedParent :引用应用模板(其中有绑定数据的元素)的元素。

           <2.3>Self :引用用户对其设置绑定的元素。

           <2.4>FindAncestor :引用数据绑定元素父链中的上级。

    <3>DataContext :如果没有指定Source或者RelativeSource属性,WPF将从当前元素开始向上搜索元素树。检查每个元素的DataContext属性,并且会使用最先找到的DataContext,也即DataContext属性不为null的数据上下文,DataContext可以绑定很多属性。

posted @ 2014-07-18 13:43  b̶i̶n̶g̶.̶  阅读(999)  评论(0编辑  收藏  举报