具有异常的验证与IDataErrorInfo和新的INotifyDataErrorInfo

本文关键字:INotifyDataErrorInfo IDataErrorInfo 验证 异常 | 更新日期: 2023-09-27 18:33:34

我正在尝试不同的验证方式,但我遇到了新的INotifyDataErrorInfo接口的问题。

例如,在写入仅接受 10 个字符的绑定文本框时。我写了 11 个字符并标记出来。验证开始并将文本框标记为红色等。现在,我不想将此无效值写到此绑定的源中,但是如果我不这样做,我会立即将文本框中的值重置为最后一个有效值。就好像绑定在其绑定上执行 UpdateTarget 一样,即使存在错误。

通过使用 ValidatesOnExceptions 并在 setter 中抛出异常,我得到了我所追求的行为。如果资源库中引发了异常,则绑定不会从源更新其值。这会在文本框中保留无效值,以便我可以使用它使其有效。我认为这比必须在底层对象中存储无效值要好得多。

问题是为什么IDataErrorInfo和新的INotifyDataErrorInfo以这种方式运行,即使存在错误,它也从源代码更新目标?我可以让它的行为更像 ValidatesOnExceptions 吗?

我需要InotifyDataErrorInfo,因为其他功能,如异步验证...

具有异常的验证与IDataErrorInfo和新的INotifyDataErrorInfo

如果需要在将值提交到源之前对其进行验证,则需要创建自定义验证规则,并将"验证步骤"设置为"原始提议值"或"转换的提议值"。

有关详细信息,请参阅有关验证过程和验证步骤的文档。

相关文章:
  • 没有找到相关文章