4

我创建了一个带有 DependencyProperty 的简单类。设置值时,我观察到在 CoerceValueCallback 之前调用了 ValidateValueCallback。

wpftutorial和其他书籍中,声明在验证之前调用强制。

4

2 回答 2

2

是的,我观察到了同样的事情。看来验证确实先于强制。设置新值时,将对其进行验证。如果强制更改/约束一个值,则必须再次对其进行验证。所以从技术上讲,如果我们将强制视为另一个“集合”,那么验证总是在“集合”之后发生。

我猜其他网站/书籍正在做出一个假设,尽管令人困惑,但验证具体发生在强制之后。它似乎发生在任何“设置”之后。

于 2008-10-10T18:39:57.740 回答
2

3.5sp1 在这里。

MSDN似乎暗示验证发生在强制之前。这与您所发现的相符。

我自己做的,ValidateValueCallback之前来过CoerceValueCallback。我什至在Reflector中阅读了源代码并确认了这一点,尽管很难遵循所有代码并确定所有可能的路径。

有趣的。我想知道在早期版本中是否相反。

编辑:

显然,当您从 中返回不同的值时CoerceValueCallbackValidateValueCallback会再次调用 以获取新值。验证-强制-验证。

于 2008-10-10T17:21:44.997 回答