• 元素绑定


    数据绑定是种关系,告诉WPF从源对象提取信息设置目标对象的属性
    源对象是WPF元素并且源属性是依赖项属性的数据绑定,这是最简单的数据绑定。 
    绑定表达式 :数据绑定表达式使用XAML扩展标记,以Binding开头,实际上是创建了System.Windows.Data.Binding类实例,且设置两个属性:ElementName属性(源元素)和Path属性(源元素中的属性)。  
    (1)绑定错误:WPF不会引发异常带来通知与数据绑定相关的问题。指定的元素或属性不存在,只是在目标属性中不能显示数据。WPF输出了绑定失败细节的跟踪信息。当调试应用程序时,该信息显示在Visual Studio的输出窗口中。
    (2)绑定模式:数据绑定的特性是目标会被自动更新,而不管源是被如何修改的。Binding.Mode的所有枚举值:
    OneWay:当源属性变化时更新目标属性
    TwoWay:当源属性变化时更新目标属性,并且当目标属性变化时更新源属性
    OneTime:最初根据源属性设置目标属性。然而,在此之后的所有改变都会被忽略
    OneWayToSource:当目标属性变化时更新源属性
    Default:此类绑定依赖于目标属性,他既可以是双向的,也可以是单向的。

    代码创建绑定:实例化Binding对象,指定Source,Path,Mode
    移除:BindingOperation类的ClearBinding(),ClearAllBindings(),都使用DependencyObject的ClearValue()
    创建动态绑定——根据其他运行时信息修改绑定,或者根据环境创建不同的绑定
    删除绑定——借助ClearBinding()或ClearAllBindings()方法。
    创建自定义控件——更容易的修改控件的外观,将特定的细节从标记移到代码中。
    检索绑定:1 BindingOperations.GetBinding() 2 BindingOperations.GetBingingExpression()
    多绑定:Mode允许改变绑定方向,(双向绑定),创建多个设置同一属性的绑定表达式。例如TextBox.Text属性创建表达式以链接到TextBlock.FontSize属性,而TextBlock.FontSize又链接到Slider.Value属性的绑定表达式。
    绑定更新:源的变化会立即影响目标,然而反向的传递从目标到源未必会立即发生。他们的行为由
    Binding.UpdateSourceTrigger属性控制。
    PropertyChanged:当目标属性变化时立即更新源。
    LostFocus:当目标属性变化并且目标属性失去焦点时跟新源。
    Explicit:除非调用BindingExpression.UpdateSource()方法,否则无法更新源。
    Default:根据目标属性的元素确定更新行为。大多数属性的默认行为是PropertyChanged,但TextBox.Text属性的默认行为是LostFocus

    绑定延迟: Binding的Delay,毫秒
    绑定到非元素对象:
    Source:指向源对象的引用,提供数据的对象。
    RelativeSource:这是引用,使用RelativeSource对象指向源对象。有了这个附加层,在在当前元素的基础上构建引用。这似乎增加了复杂程度,当编写控件模板以及数据模板时很方便。
    DataContext:如果没有使用Source或RelativeSource属性指定源,WPF就从当前元素开始在元素树中向上查找。检查每个属性的DataContext属性,并使用第一个非空的DataContext属性。
    Source:静态资源x:Static
    RelativeSource:还要创建嵌套的RelativeSource对象,更常用是使用Binding和RelativeSource标记扩展,将其合并到一个字符串中。{RelativeSource FindAncestor, AncestorType ={x:Type Window}}
    Self:表达式绑定到同一元素的另一个属性上
    FindAncestor:表达式绑定到父元素
    PreviousData:表达式绑定到数据绑定列表中的前一个数据项。在
    TemplateParent:表达式绑定到应用模板的元素
    DataContext属性:将大量元素绑定到同一对象。设置Binding.Source属性相同的方法设置元素的DataContext属性。
    省略源信息时,为null,继续向上在元素树中查找第一个不为null的数据。Binding Path=Source

  • 相关阅读:
    JavaEE进阶 - Spring Boot 日志文件 - 细节狂魔
    学习笔记19--自动驾驶智能化指标评测体系(下)
    AI自己写代码让智能体进化!OpenAI的大模型有“人类思想”那味了
    数据挖掘技术-绘制折线图
    两表union 如何保证group by 字段唯一
    Java中Integer的最大值和最小值
    ASO优化:教你学会如何选词,技巧有哪些?
    18. 四数之和 c++ 防止溢出
    JavaScript学习Day001
    面试准备-操作系统
  • 原文地址:https://blog.csdn.net/weixin_44588195/article/details/125904918