WPF 绑定binding都有哪些事件

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

主要包含以下几个事件:

  1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件
  • PropertyChanged:每当目标属性的值更改时,将立即更新源属性。
  • LostFocus:当目标元素失去焦点时,更新源属性。
  • Explicit:只有在调用BindingExpression.UpdateSource方法时才会更新源属性。
  • Default:与绑定目标和属性的数据类型有关,通常是LostFocus或PropertyChanged事件。
  • Explicit和LostFocus是最常见的UpdateSourceTrigger事件,而PropertyChanged是最常用的默认事件。
  1. NotifyOnTargetUpdated:指定当绑定目标发生更改时是否引发TargetUpdated事件。
  • 如果将此属性设置为true,则当目标属性更改时,将在绑定源上引发TargetUpdated事件(可在该事件中通知绑定源进行相应的更改)。
  • 需要注意的是,如果在绑定中使用了Mode属性,并且Mode属性的值为TwoWay,则NotifyOnTargetUpdated属性将被忽略。这是因为在TwoWay模式下,更改源或目标都会引发另一个方向上的更新。
  1. NotifyOnSourceUpdated:指定当绑定源发生更改时是否引发SourceUpdated事件。
  • 如果将此属性设置为true,则当源属性更改时,将在绑定目标上引发SourceUpdated事件(可在该事件中通知绑定目标进行相应的更改)。
  • 需要注意的是,如果在绑定中使用了Mode属性,并且Mode属性的值为TwoWay,则NotifyOnSourceUpdated和属性将被忽略。这是因为在TwoWay模式下,更改源或目标都会引发另一个方向上的更新。
  1. ValidatesOnDataErrors:是一个可选的事件,它允许开发人员在数据绑定时验证数据,是用于指定是否启用数据验证错误。
  • 当设置了该事件时,WPF会在数据源中实现IDataErrorInfo接口的类中的Error属性发生更改时,自动调用该事件。开发人员可以使用该事件来检测数据绑定中的错误,并采取适当的措施,例如禁用按钮或显示错误消息。如果开发人员不设置ValidatesOnDataErrors事件,则WPF将不会在数据绑定中自动执行数据验证。如何利用 IDataErrorInfo 实现数据校验 - LXLR - 博客园 (cnblogs.com)
  • 当数据验证失败时,绑定会将错误信息存储在Binding对象的Validation.Errors属性中。但是,这些错误信息不会自动显示在UI元素中,需要使用NotifyOnValidationError属性来实现。
  1. NotifyOnValidationError:用于指定当数据验证失败时是否触发属性更改事件。
  • 如果设置为True,则当数据验证失败时,属性更改事件将被触发,这意味着可以在代码中捕获和处理该事件。如果设置为False,则属性更改事件将不会在数据验证失败时触发。
  • 当NotifyOnValidationError属性设置为True时,如果绑定数据时发生验证错误,Binding会引发一个Validation.Error事件,该事件可以被UI元素捕获并显示错误信息。
相关推荐
想要狠赚笔的小燕10 分钟前
vue项目的入口文件是什么 main.js还是index.html,他俩有啥区别
前端·javascript
Jiude12 分钟前
AI面对真机调试也束手无策?我将方法论形成了一套SKILL 🛠️🤖
前端·后端·测试
之歆24 分钟前
Day02_ES6+ 核心特性深度解析:现代 JavaScript 开发的基石
前端·javascript·es6
问心无愧051325 分钟前
ctf show web入门71
android·前端·笔记
light blue bird34 分钟前
支组汇总主子节点工序路径图表
前端·jvm·.net·桌面端·gdi绘图
小KK_1 小时前
新手必看篇——JS类型判断
前端·javascript
小小高不懂写代码1 小时前
Vibe Coding时代的自我鞭策
前端·人工智能
喵个咪1 小时前
基于 Nuxt 4 的现代 Headless CMS 前端:架构深度解析与二次开发指南
前端·vue.js·nuxt.js
AI科技星1 小时前
万有引力G与真空介电常数ε0全维度完整关系式汇编(基于v=c螺旋时空理论)
c语言·开发语言·前端·javascript·网络·汇编·electron
喵个咪1 小时前
基于 Next.js 的 Headless CMS 前端架构:技术解析与二次开发导引
前端·react.js·next.js