CoerceValueCallback 代理人
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
依存関係プロパティの値が再評価されたり強制が明示的に要求されたりした場合に必ず呼び出されるメソッドのテンプレートを提供します。
public delegate System::Object ^ CoerceValueCallback(DependencyObject ^ d, System::Object ^ baseValue);
public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
type CoerceValueCallback = delegate of DependencyObject * obj -> obj
Public Delegate Function CoerceValueCallback(d As DependencyObject, baseValue As Object) As Object
パラメーター
プロパティが存在するオブジェクト。 コールバックが呼び出されると、プロパティ システムがこの値を渡します。
- baseValue
- Object
強制が試行される前のプロパティの新しい値。
戻り値
強制された (適切な型の) 値。
例
次の例では、別のプロパティの値など、他の入力に基づいて依存関係プロパティの格納された値を強制する、このコールバックの実装が含まれています。 この場合、コールバックは、プロパティがボタンを持つシャツの種類に対応しているかどうかを ShirtType
確認します。そのため、シャツの種類にボタン ButtonColor
がない場合、シャツの種類にボタンがない場合は、 ButtonColor
値を開始値に強制的に戻します。これにより、UI (表示されません) はそのドロップダウンが有効な選択肢から削除されます。
private static object CoerceButtonColor(DependencyObject d, object value)
{
ShirtTypes newShirtType = (d as Shirt).ShirtType;
if (newShirtType == ShirtTypes.Dress || newShirtType == ShirtTypes.Bowling)
{
return ButtonColors.Black;
}
return ButtonColors.None;
}
Private Shared Function CoerceButtonColor(ByVal d As DependencyObject, ByVal value As Object) As Object
Dim newShirtType As ShirtTypes = (TryCast(d, Shirt)).ShirtType
If newShirtType = ShirtTypes.Dress OrElse newShirtType = ShirtTypes.Bowling Then
Return ButtonColors.Black
End If
Return ButtonColors.None
End Function
注釈
基づく CoerceValueCallback コールバックは、いくつかの異なる手法を使用して依存関係プロパティに割り当てることができます。 これらの各手法では、最初に新しいプロパティ メタデータ オブジェクト (PropertyMetadataまたは派生クラスなど FrameworkPropertyMetadata) を作成する必要があります。 パラメーターを受け取るコンストラクターシグネチャを使用してメタデータ オブジェクトを coerceValueCallback
作成し、そのパラメーターをコールバック ハンドラーに割り当てます。 または、任意のシグネチャによってメタデータを構築し、メタデータを CoerceValueCallback 使用する前にプロパティを設定します。
このメタデータがある場合は、次のことができます。
いずれかのシグネチャ Registerを使用して新しいクラスに新しい依存関係プロパティを定義し、メタデータを
typeMetadata
値として指定します。依存関係プロパティを所有するクラスから派生する場合は、既存の依存関係プロパティのメタデータ (呼び出し OverrideMetadata(Type, PropertyMetadata)) をオーバーライドします。
呼び出AddOwner(Type, PropertyMetadata)して、新しいDependencyObjectメタデータを使用して、既存の依存関係プロパティを新しいクラスに追加します。
このコールバックの実装では、値 baseValue
を確認し、値または型に基づいて、これがさらに強制する必要がある値であるかどうかを判断する必要があります。
依存関係プロパティはCoerceValueCallback、プロパティ システムまたはその他の呼び出し元がインスタンスをDependencyObject呼び出すたびに呼び出CoerceValueされ、そのプロパティの識別子を dp
.
プロパティ値の変更は、プロパティ システム内の任意の参加要素から行われる可能性があります。 これには、スタイル、ジェネリック無効化、トリガー、プロパティ値の継承、ローカル値の設定が含まれます。
一般に、特定の CoerceValueCallback 依存関係プロパティに複数の依存関係プロパティを指定することは避ける必要があります (既 CoerceValueCallbackに存在する依存関係プロパティの新しいメタデータをオーバーライドまたは追加します)。 1 つのコールバックのみが動作できます。処理コールバックは、呼び出し元と比較して継承の最も派生クラスに DependencyObject 適用されたコールバックになります。 所有者階層の上位に存在していた依存関係プロパティのメタデータに割り当てられたその他のコールバックは、メタデータがオーバーライドされると置き換えられます。
拡張メソッド
GetMethodInfo(Delegate) |
指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。 |