【发布时间】:2011-10-20 19:38:57
【问题描述】:
当发生数据绑定时,如何忽略对控件的更改?我尝试挂钩各种事件,如 gotfocus、textchanged 和 leavefocus,但如果控件已经具有焦点并且用户“取消”他们的更改,当我重新加载记录并且数据绑定接管时,textchanged 认为用户仍然进行了更改重点是那个控制。调用堆栈为空。是否有任何全局数据绑定事件,例如数据绑定开始和数据绑定结束?我看到我在哪里触发了 OnProperyChanged,但在该调用中,不会发生数据绑定。看起来它正在“排队”并在其他时间运行。
在某一时刻,我打算在我们的视图模型中挂钩属性更改事件,但这意味着在用户离开控件之前,我不会检测到并且无法直观地显示表单已修改。我知道,我知道,我可以更改我的所有绑定,以便在每次更改字符时立即发生绑定,但这会与一些验证案例混淆,因为用户尚未完成输入值。
我真的很喜欢像 TextChangedByUser 这样的事件,无论用户是否使用了键、剪贴板、鼠标剪贴板,以及用户触发的任何东西,它都会触发。
我只是不知道如何区分用户更改和数据绑定更改。
【问题讨论】:
标签: wpf data-binding