DependencyProperty を使用して単純なクラスを作成しました。値を設定すると、ValidateValueCallback が CoerceValueCallback の前に呼び出されることがわかります。
wpftutorialや他の本では、検証の前に強制が呼び出されると記載されています。
DependencyProperty を使用して単純なクラスを作成しました。値を設定すると、ValidateValueCallback が CoerceValueCallback の前に呼び出されることがわかります。
wpftutorialや他の本では、検証の前に強制が呼び出されると記載されています。
はい、私は同じことを観察しました。その場合、検証は実際に強制の前に行われるようです。新しい値が設定されると、検証されます。強制によって値が変更/制約される場合は、値を再度検証する必要があります。したがって、技術的には、強制を単なる別の「セット」と見なす場合、検証は常に「セット」の直後に行われます。
他のサイト/本は、紛らわしいものではありますが、検証は特に強制後に行われると仮定していると思います。それは「セット」の後に起こるようです。
3.5sp1はこちら。
MSDNは、強制の前に検証が行われることを暗示しているようです。これは、あなたが発見したものと一致します。
私は自分でやったし、ValidateValueCallback
前に来るCoerceValueCallback
。Reflectorでソースを読んで同じことを確認しましたが、そのすべてのコードをたどってすべての可能なパスを確実に知ることは困難です。
面白い。以前のバージョンでは逆だったのではないかと思います。
編集:
どうやら、 から別の値を返すとCoerceValueCallback
、ValidateValueCallback
新しい値に対して が再度呼び出されるようです。検証 - 強制 - 検証。