0

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

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

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

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

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

4

1 回答 1

2

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

有关更多信息,请参阅有关验证过程验证步骤的文档。

于 2012-05-09T15:02:46.917 回答