【问题标题】:Validation with exceptions vs IDataErrorInfo and the new INotifyDataErrorInfo带有异常的验证与 IDataErrorInfo 和新的 INotifyDataErrorInfo
【发布时间】:2012-05-09 14:43:18
【问题描述】:

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

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

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

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

由于异步验证等其他功能,我需要 INotifyDataErrorInfo...

【问题讨论】:

    标签: c# wpf validation idataerrorinfo inotifydataerrorinfo


    【解决方案1】:

    如果您需要在将值提交到源之前对其进行验证,则需要创建自定义验证规则并将 ValidationStep 设置为 RawProposedValue 或 ConvertedProposedValue。

    有关详细信息,请参阅 Validation ProcessValidationStep 上的文档。

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 2020-02-18
      • 2014-03-01
      • 2015-07-13
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      相关资源
      最近更新 更多