在设置DependencyProperty值时,在Coercion之前或之后调用验证?

时间:2008-10-10 16:12:41

标签: wpf dependency-properties

我使用DependencyProperty创建了一个简单的类。设置值时,我发现在CoerceValueCallback之前调用了ValidateValueCallback。

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

2 个答案:

答案 0 :(得分:2)

3.5sp1在这里。

MSDN似乎意味着在强制之前进行验证。这符合您的发现。

我自己做了,ValidateValueCallbackCoerceValueCallback之前。我甚至在Reflector中阅读了源代码并确认了同样的内容,尽管很难按照所有代码来确定所有可能的路径。

有趣。我想知道它是否是早期版本的另一种方式。

修改

显然,当您从CoerceValueCallback返回不同的值时,会再次调用ValidateValueCallback作为新值。验证-强制-验证。

答案 1 :(得分:2)

是的,我发现了同样的事情。然后似乎验证确实在强制之前出现。设置新值后,将对其进行验证。如果强制更改/约束值,则必须再次进行验证。从技术上讲,如果我们认为强制只是另一个“集合”,验证总是在“集合”之后发生。

我猜其他网站/书籍正在做出一个假设,尽管这是一个令人困惑的假设,验证特别是在强制之后发生。它似乎发生在任何“集合”之后。