我有一个基本表单,其中的控件通过数据绑定到实现该对象的对象 INotifyPropertyChanged 界面。我想为几个属性添加一些验证,但不想实施 数据错误信息 为了验证几个属性。

我已经创建了执行验证并在对象中返回错误消息(如果适用)的函数。我想做的是当对象的相关属性发生更改时从我的表单中调用这些函数,并设置 错误提供者 控制我的表单以及从验证函数返回的任何错误消息。

我尝试将事件处理程序连接到 Validating 和 LostFocus 事件,但这些事件似乎在我的对象更新之前触发,因此它们没有验证正确的数据。只有当我离开文本框、返回然后再次离开时,验证才会针对正确的数据运行。

是否有另一个事件可以挂钩,以便在更新对象的属性后可以调用这些验证函数?或者我最好只实施 数据错误信息 界面?

有帮助吗?

解决方案

我不确定到底是什么问题,您是说在控件失去焦点之前无法设置该属性吗?

如果是这样,您需要设置绑定来更新 OnPropertyChanged 代替 OnValidation.

绑定到 OnPropertyChanged 表示绑定立即更新,而 OnValidation 仅在触发验证时更新底层对象(对于大多数控件来说,当它们失去焦点时)。

其他提示

我想我在卡梅伦的帖子的帮助下找到了问题的解决方案。我已更改绑定以更新 OnPropertyChanged,现在当我将事件处理程序连接到 LostFocus 事件时,将对文本框中的“新”值而不是之前在对象中保存的值执行验证

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top