在WPF中,源属性(Source Property)指的是提供数据的属性,通常是数据模型或者其他控件的属性,而目标属性(Target Property)则是数据绑定的目标,通常是绑定到控件的属性,例如TextBlock的Text属性。数据绑定将源属性的值自动更新到目标属性中。
 

主要包含以下几个事件:

1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件

  • PropertyChanged:每当目标属性的值更改时,将立即更新源属性。
  • LostFocus:当目标元素失去焦点时,更新源属性。
  • Explicit:只有在调用BindingExpression.UpdateSource方法时才会更新源属性。
  • Default:与绑定目标和属性的数据类型有关,通常是LostFocus或PropertyChanged事件。
  • Explicit和LostFocus是最常见的UpdateSourceTrigger事件,而PropertyChanged是最常用的默认事件。

2. NotifyOnTargetUpdated:指定当绑定目标发生更改时是否引发TargetUpdated事件。

  • 如果将此属性设置为true,则当目标属性更改时,将在绑定源上引发TargetUpdated事件(可在该事件中通知绑定源进行相应的更改)。
  • 需要注意的是,如果在绑定中使用了Mode属性,并且Mode属性的值为TwoWay,则NotifyOnTargetUpdated属性将被忽略。这是因为在TwoWay模式下,更改源或目标都会引发另一个方向上的更新。

3. NotifyOnSourceUpdated:指定当绑定源发生更改时是否引发SourceUpdated事件。

  • 如果将此属性设置为true,则当源属性更改时,将在绑定目标上引发SourceUpdated事件(可在该事件中通知绑定目标进行相应的更改)。
  • 需要注意的是,如果在绑定中使用了Mode属性,并且Mode属性的值为TwoWay,则NotifyOnSourceUpdated和属性将被忽略。这是因为在TwoWay模式下,更改源或目标都会引发另一个方向上的更新。

4. ValidatesOnDataErrors:是一个可选的事件,它允许开发人员在数据绑定时验证数据,是用于指定是否启用数据验证错误。

  • 当设置了该事件时,WPF会在数据源中实现IDataErrorInfo接口的类中的Error属性发生更改时,自动调用该事件。开发人员可以使用该事件来检测数据绑定中的错误,并采取适当的措施,例如禁用按钮或显示错误消息。如果开发人员不设置ValidatesOnDataErrors事件,则WPF将不会在数据绑定中自动执行数据验证。如何利用 IDataErrorInfo 实现数据校验 - LXLR - 博客园 (cnblogs.com)
  • 当数据验证失败时,绑定会将错误信息存储在Binding对象的Validation.Errors属性中。但是,这些错误信息不会自动显示在UI元素中,需要使用NotifyOnValidationError属性来实现。

5. NotifyOnValidationError:用于指定当数据验证失败时是否触发属性更改事件。

  • 如果设置为True,则当数据验证失败时,属性更改事件将被触发,这意味着可以在代码中捕获和处理该事件。如果设置为False,则属性更改事件将不会在数据验证失败时触发。
  • 当NotifyOnValidationError属性设置为True时,如果绑定数据时发生验证错误,Binding会引发一个Validation.Error事件,该事件可以被UI元素捕获并显示错误信息。
 

WPF 绑定binding都有哪些事件的更多相关文章

  1. WPF绑定(Binding)(4)

    什么是绑定(Binding)? 在winform中, 我们常常会用到各种类型的赋值, 例如: button1.Text="Hello"; label.Text="Hell ...

  2. WPF绑定Binding及模式

    绑定,就是把一个对象属性的值绑定在别的对象的属性上 1. 默认绑定 public class Company { public string Name { get; set; } } XAML代码 1 ...

  3. 整理:WPF用于绑定命令和触发路由事件的自定义控件写法

    原文:整理:WPF用于绑定命令和触发路由事件的自定义控件写法 目的:自定义一个控件,当点击按钮是触发到ViewModel(业务逻辑部分)和Xaml路由事件(页面逻辑部分) 自定义控件增加IComman ...

  4. WPF之Binding深入探讨

    原文:http://blog.csdn.net/fwj380891124/article/details/8107646 1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在 ...

  5. WPF快速入门系列(4)——深入解析WPF绑定

    一.引言 WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能.WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信 ...

  6. WPF数据绑定Binding(二)

    WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...

  7. WPF的Binding功能解析

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  8. WPF之Binding深入探讨--Darren

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  9. 【转】【WPF】WPF绑定用法

    一.简介 为了后面行文顺利,在进入正文之前,我们首先对本文所涉及到的绑定知识进行简单地介绍.该节包含绑定的基本组成以及构建方式. WPF中的绑定完成了绑定源和绑定目标的联动.一个绑定常常由四部分组成: ...

  10. WPF之Binding【转】

    WPF之Binding[转] 看到WPF如此之炫,也想用用,可是一点也不会呀. 从需求谈起吧: 首先可能要做一个很炫的界面.见MaterialDesignInXAMLToolKit. 那,最主要的呢, ...

随机推荐

  1. .NET周刊【8月第2期 2023-08-14】

    本周由于Myuki大佬感染新冠,国际板块暂停更新一周,将在下周补齐,所以本周只有国内板块. 国内文章 解决 Blazor 中因标签换行导致的行内元素空隙问题 https://www.cnblogs.c ...

  2. 「学习笔记」扩展 KMP(Z 函数)

    对于个长度为 \(n\) 的字符串 \(s\).定义 \(z[i]\) 表示 \(s\) 和 \(s[i,n-1]\)(即以 \(s[i]\) 开头的后缀)的最长公共前缀(LCP)的长度.\(z\) ...

  3. 使用 OpenTelemetry 构建 .NET 应用可观测性(1):什么是可观测性

    目录 什么是系统的可观测性(Observability) 为什么需要软件系统需要可观测性 可观测性的三大支柱 日志(Logging) 指标(Metrics) 分布式追踪(Distributed Tra ...

  4. 按关键字API接口搜索天眼查企业数据

    一.如果你想要查找某一个企业的基本信息或是对行业中的企业进行筛选,那么使用API接口搜索天眼查企业数据会非常方便. 首先,你需要获取天眼查API的access_token,这可以通过注册账号获取.一旦 ...

  5. Excel单元格快速交换相邻位置内容

    一.相邻两列内容交换(A1与B1交换)1.首先选择A1单元格的边框位置,出现了向上下左右的十字标志 2.此时按住shift键,并且拖向B1单元格的右边,出现"工"汉字标志 3.松开 ...

  6. WebApi中添加Jwt鉴权

    前言 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息.一个 JWT 实际上就是一个字符串,它由三部分组成,头部.载荷与签 ...

  7. csps 线性dp

    合唱队形 正反分别求一遍最长上升子序列,然后枚举中间的最高点,计算出来队列里面的最多人,然后就可以知道需要出列的最少人. 过河 tips:两个互质的数字 p,q,他们所不能拼出来的最小的数字是 \(( ...

  8. 【BUU刷题日记】--第二周

    [BUU刷题日记]--第二周 一.[WUSTCTF2020]朴实无华 1 目录爆破 使用dirsearch扫描发现没有结果,因为如果dirsearch请求过快则会导致超出服务器最大请求,扫描不出本来可 ...

  9. 从一次Kafka宕机说起(JVM hang)

    一.背景 时间大概是在夏天7月份,突然收到小伙伴的情报,我们线上的一个kafka实例的某个broker突然不提供服务了,也没看到什么异常日志,反正就是生产.消费都停了.因为是线上服务,而且进程还在,就 ...

  10. .then()方法的意思和用法

    then()方法是异步执行. 意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题. 语法:promise.then(onCompleted, ...