Validation03/30/2017この記事の内容このトピックでは、検証による判定、プロパティの有効値が変更されたときに呼び出されるコールバック、値の決定への外部的影響のオーバーライドなど、プロパティ関連機能の代替カスタム実装を使用して依存関係プロパティを作成する方法について説明します。システムの既定の動作を拡張することが適切であるシナリオについても説明します。appropriate.必須コンポーネントPrerequisitesこのトピックでは、依存関係プロパティの実装の基本シナリオとカスタム依存関係プロパティへのメタデータの適用方法を理解していることを前提とします。詳細については、「カスタム依存関係プロパティ」および「依存関係プロパティのメタデータ」を参照してください。Callbacks検証コールバックは、最初の登録時に依存関係プロパティに割り当てることができます。検証コールバックは、プロパティメタデータの一部ではありません。Registerメソッドを直接入力したものです。したがって、依存関係プロパティの検証コールバックを作成した後で、その検証コールバックを新しい実装でオーバーライドすることはできません。Property検証コールバックは、オブジェクト値を受け取るように実装されます。falseを返します。システムに登録済みの適切な型であると想定されます。したがって、通常の場合、コールバック内での型チェックは行われません。システムが実行するさまざまな操作で使用されます。これには、既定値による初期型の初期化、呼び出しSetValueによるプログラムによる変更、または指定された新しい既定値を使用したメタデータのオーバーライドが含まれます。返す場合、例外が発生します。アプリケーションの作成者はこれらの例外を処理する必要があります。型の値を制限するときによく使用されます。greater.検証コールバックは、インスタンスではなくクラスを検証するためのものです。コールバックのパラメーターは、検証するプロパティがDependencyObject設定されている特定のとは通信しません。強制することはできません。state.非常に単純な検証コールバックシナリオのコード例を次に示します。Doubleプリミティブとして型指定されたプロパティがまたはNegativeInfinityではないPositiveInfinityことを検証しています。Events強制値コールバックは、依存DependencyObject関係プロパティの値が変更PropertyChangedCallbackされるたびにプロパティシステムによって呼び出される実装と同様に、プロパティの特定のインスタンスを渡します。つのコールバックを組み合わせて使用すると、あるプロパティが変更されたときに他のプロパティに自動的に強制または再評価が適用される一連のプロパティを要素に作成することができます。インターフェイスによって駆動されるプロパティがあるときによく使用されます。ここで、最大値が現在の値より小さい値に調整された場合、現在の値を新しい最大値以下の値に強制する必要があります。現在の値と最小値についても同様の関係が成り立ちます。つを示す非常に簡単なコード例は、こうした関係を表しています。プロパティの登録方法を示しています。ここでは、前のセクションで説明した検証を使用しています。プロパティ変更コールバックを使用して、他の依存関係プロパティに対して登録されている強制値コールバックを明示的に呼び出すことにより、変更を他のプロパティに伝播します。プロパティが依存している可能性があるプロパティの値を検証し、必要に応じて現在の値を強制的に指定します。Function注意プロパティの既定値は強制的に指定されません。既定値に等しいプロパティ値は、プロパティ値が既定値のままである場合、またはその他の値をClearValueでクリアした場合に発生する可能性があります。メタデータの一部です。したがって、特定の依存関係プロパティを所有する型から派生させた型に存在するその特定の依存関係プロパティのコールバックは、派生させた型でプロパティのメタデータをオーバーライドすることで変更できます。制約がアプリケーションの有効期間内に動的に変更される可能性があるプロパティ値に基づいている場合、強制の制約も動的に変更されます。制約されているプロパティは、指定された新しい制約の下で、その値を目的の値にできる限り近づけることができます。制約がすべて解除された場合、値は目的の値になります。相互に循環的に依存する複数のプロパティを使用している場合、非常に複雑な依存関係シナリオを導入することができます。ユーザー設定可能なプロパティにすることができます。小さくなるように強制する必要があります。未設定の状態になります。