zoukankan      html  css  js  c++  java
  • 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可以绑定很多属性。

  • 相关阅读:
    gitbook 入门
    mac 手动卸载软件位置
    idea 版本控制忽略文件、文件夹设置
    Mac .DS_Store 隐藏文件和清理.DS_Store的方法
    mac 打开整个系统的隐藏文件
    js拼接字符串,字符串转数组
    新一代 javascript 模板引擎:artTemplate-3.0
    webpack+express多页站点开发
    Vue2学习笔记:组件(Component)
    Vue2学习笔记:过渡效果css
  • 原文地址:https://www.cnblogs.com/U188/p/3860202.html
Copyright © 2011-2022 走看看