ValidateValueCallback 代理人


依存関係プロパティの有効な値を検証するコールバックとして使用されるメソッドを表します。Represents a method used as a callback that validates the effective value of a dependency property.

public delegate bool ValidateValueCallback(System::Object ^ value);
public delegate bool ValidateValueCallback(object value);
type ValidateValueCallback = delegate of obj -> bool
Public Delegate Function ValidateValueCallback(value As Object) As Boolean 



検証する値。The value to be validated.



値が検証された場合は true、送信された値が正しくない場合はfalsetrue if the value was validated; false if the submitted value was invalid.


次の例には、カスタム依存関係プロパティの値の範囲を検証するこのコールバックの実装が含まれています。The following example includes an implementation of this callback to validate a range of values for a custom dependency property. この場合、プロパティ値には列挙型が必要であり、検証によって、指定された値がその列挙体のメンバーに評価されることが保証されます。In this case the property value expects an enumeration, and the validation assures that the provided value evaluates to a member of that enumeration.

private static bool ShirtValidateCallback(object value)
    ShirtTypes sh = (ShirtTypes) value;
    return (sh==ShirtTypes.None || sh == ShirtTypes.Bowling || sh == ShirtTypes.Dress || sh == ShirtTypes.Rugby || sh == ShirtTypes.Tee);
Private Shared Function ShirtValidateCallback(ByVal value As Object) As Boolean
    Dim sh As ShirtTypes = CType(value, ShirtTypes)
    Return (sh=ShirtTypes.None OrElse sh = ShirtTypes.Bowling OrElse sh = ShirtTypes.Dress OrElse sh = ShirtTypes.Rugby OrElse sh = ShirtTypes.Tee)

End Function


このデリゲートに基づくコールバックは、および関連するメソッドの特定のシグネチャによって使用され DependencyProperty.Register ます (たとえば、 RegisterAttached と読み取り専用の場合)。Callbacks based on this delegate are used by certain signatures of DependencyProperty.Register and related methods, such as RegisterAttached and read-only equivalents. 有効にする validateValueCallback たびにプロパティ値の特定の検証を行う場合は、パラメーターを受け取るシグネチャを使用する必要があります。You should use signatures that take the validateValueCallback parameter if you want specific validation of the property value each time that its effective is set. 次に、このコールバックを実装して、提示された値の実際の検証を実行する必要があります。You should then implement this callback such that it performs the actual validation of the proposed value. コールバックは、 true コールバックに送信された値が有効な場合はを返し、それ以外の場合はを返し false ます。The callback should return true if the value submitted to the callback is valid, and false otherwise. 値を指定すると、 false プロパティシステムの特定の部分で無効なプロパティセットが試行されたときに例外が生成されるため、アプリケーションでこれらの例外を処理できるように準備する必要があります。A false value will produce an exception in the specific portion of the property system where the invalid property set was attempted, so your application should be prepared to handle these exceptions.

検証コールバックは、依存関係プロパティのメタデータではなく、依存関係プロパティの識別子に格納されます。Validation callbacks are stored on dependency property identifiers, rather than dependency property metadata. 検証コールバックは、プロパティが設定されているの特定のインスタンスへのアクセス権を持っていません DependencyObject 。また、一般にプロパティに対して許容される値にのみ影響を与えることができます。Your validation callback does not have access to a specific instance of a DependencyObject on which the property is set, and can only influence what values are accepted for the property in general. 特定のインスタンスに基づいてプロパティ値を変更できるコールバックが必要な場合は、 CoerceValueCallback PropertyChangedCallback プロパティのプロパティメタデータに適用されるコールバックとコールバックの組み合わせを使用する必要があります。If you need a callback that can change property values based on a specific instance, you should use a combination of a CoerceValueCallback and PropertyChangedCallback callbacks as applied to the property metadata of your property. また、これらのコールバックを、プロパティの値に影響を与える関連プロパティに適用することもできます。You might also apply these callbacks to related properties that should influence your property's value. 詳細については、「依存関係プロパティのコールバックと検証」を参照してください。For details, see Dependency Property Callbacks and Validation.



指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。Gets an object that represents the method represented by the specified delegate.