4

DependencyProperty を使用して単純なクラスを作成しました。値を設定すると、ValidateValueCallback が CoerceValueCallback の前に呼び出されることがわかります。

wpftutorialや他の本では、検証の前に強制が呼び出されると記載されています

4

2 に答える 2

2

はい、私は同じことを観察しました。その場合、検証は実際に強制の前に行われるようです。新しい値が設定されると、検証されます。強制によって値が変更/制約される場合は、値を再度検証する必要があります。したがって、技術的には、強制を単なる別の「セット」と見なす場合、検証は常に「セット」の直後に行われます。

他のサイト/本は、紛らわしいものではありますが、検証は特に強制後に行われると仮定していると思います。それは「セット」の後に起こるようです。

于 2008-10-10T18:39:57.740 に答える
2

3.5sp1はこちら。

MSDNは、強制の前に検証が行われることを暗示しているようです。これは、あなたが発見したものと一致します。

私は自分でやったし、ValidateValueCallback前に来るCoerceValueCallbackReflectorでソースを読んで同じことを確認しましたが、そのすべてのコードをたどってすべての可能なパスを確実に知ることは困難です。

面白い。以前のバージョンでは逆だったのではないかと思います。

編集:

どうやら、 から別の値を返すとCoerceValueCallbackValidateValueCallback新しい値に対して が再度呼び出されるようです。検証 - 強制 - 検証。

于 2008-10-10T17:21:44.997 に答える