CoerceValueCallback CoerceValueCallback CoerceValueCallback CoerceValueCallback Delegate

Définition

Fournit un modèle pour une méthode appelée toutes les fois qu'une valeur de propriété de dépendance est réévaluée, ou que la contrainte est demandée spécifiquement.Provides a template for a method that is called whenever a dependency property value is being re-evaluated, or coercion is specifically requested.

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 

Paramètres

d
DependencyObject DependencyObject DependencyObject DependencyObject

L'objet sur lequel existe la propriété.The object that the property exists on. Lorsque le rappel est appelé, le système de propriétés passe cette valeur.When the callback is invoked, the property system will pass this value.

baseValue
Object Object Object Object

La nouvelle valeur de la propriété, avant toute tentative de contrainte.The new value of the property, prior to any coercion attempt.

Valeur renvoyée

System.Object

La valeur forcée (avec type approprié).The coerced value (with appropriate type).

Héritage
CoerceValueCallbackCoerceValueCallbackCoerceValueCallbackCoerceValueCallback

Exemples

L’exemple suivant inclut une implémentation de ce rappel pour forcer la valeur d’une propriété de dépendance basée sur les autres entrées, comme une autre valeur de propriété stockée.The following example includes an implementation of this callback to coerce the stored value of a dependency property based on other inputs, such as another property's value. Dans ce cas, le rappel vérifie si le ShirtType propriété correspond à un type de chemise qui a des boutons ; cas dans ce il établit une couleur par défaut initiale pour le ButtonColor, si le type de chemise a pas de boutons, il force la ButtonColor valeur à une valeur de départ, ce qui entraîne le Interface utilisateurUI (non illustré) à supprimer ce déroulement des choix effectifs.In this case, the callback checks to see whether the ShirtType property corresponds to a type of shirt that has buttons; if so it establishes a starting default color for the ButtonColor, if the shirt type has no buttons, it coerces the ButtonColor value back to a starting value, which causes the Interface utilisateurUI (not shown) to remove that dropdown from the effective choices.

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

Remarques

Les rappels basés sur CoerceValueCallback peut être affectée à une propriété de dépendance à travers plusieurs techniques différentes.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Chacune de ces techniques requiert que vous créez tout d’abord un nouvel objet de métadonnées de propriété (PropertyMetadata, ou une classe dérivée telle que FrameworkPropertyMetadata).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Créer l’objet de métadonnées à l’aide d’une signature de constructeur qui accepte le coerceValueCallback paramètre et affecter ce paramètre à votre gestionnaire de rappel.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Ou construire les métadonnées par n’importe quel signature et le jeu le CoerceValueCallback propriété avant de remettre les métadonnées en cours d’utilisation.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Lorsque vous avez ces métadonnées, vous pouvez :When you have this metadata, you can:

  • Définir une nouvelle propriété de dépendance sur une nouvelle classe, à l’aide d’une signature de Register, en donnant les métadonnées en tant que le typeMetadata valeur.Define a new dependency property on a new class, using either signature of Register, giving the metadata as the typeMetadata value.

  • Substituer les métadonnées (appelez OverrideMetadata(Type, PropertyMetadata)) pour une propriété de dépendance existante, lorsque vous dérivez de la classe qui possède la propriété de dépendance.Override the metadata (call OverrideMetadata(Type, PropertyMetadata)) for an existing dependency property, when you derive from the class that owns the dependency property.

  • Ajouter une propriété de dépendance existante vers une nouvelle DependencyObject classe, à l’aide des nouvelles métadonnées, en appelant AddOwner(Type, PropertyMetadata).Add an existing dependency property to a new DependencyObject class, using new metadata, by calling AddOwner(Type, PropertyMetadata).

Les implémentations de ce rappel doivent vérifier la valeur baseValue et déterminer selon la valeur ou le type s’il s’agit d’une valeur qui doit être forcée plus loin.Implementations of this callback should check the value in baseValue and determine based on either the value or the type whether this is a value that needs to be further coerced.

Le CoerceValueCallback pour une dépendance de la propriété est appelée chaque fois que le système de propriétés ou tout autre appelant appelle CoerceValue sur un DependencyObject instance, en spécifiant l’identificateur de cette propriété en tant que le dp.The CoerceValueCallback for a dependency property is invoked any time that the property system or any other caller calls CoerceValue on a DependencyObject instance, specifying that property's identifier as the dp.

Modifications apportées à la valeur de propriété peuvent provenir tout participant possible dans le système de propriétés.Changes to the property value may have come from any possible participant in the property system. Cela inclut les styles, l’invalidation générique, les déclencheurs, l’héritage de valeur de propriété et paramètre de valeur locale.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Vous devez généralement éviter de spécifier plusieurs CoerceValueCallback pour toute propriété de dépendance donnée (substitution ou ajout avec les nouvelles métadonnées pour une propriété de dépendance qui avait déjà un CoerceValueCallback).Generally you should avoid specifying more than one CoerceValueCallback for any given dependency property (overriding or adding with new metadata for a dependency property that already had a CoerceValueCallback). Seul l’un des rappels sera en mesure d’agir. Le rappel agissant sera celle qui a été appliqué à la classe la plus dérivée de l’héritage par rapport à la DependencyObject appelant.Only one of the callbacks will be able to act. The acting callback will be the one that was applied to the most derived class in the inheritance as compared to the DependencyObject caller. Autres rappels attribué aux métadonnées pour la propriété de dépendance telle qu’elle existait supérieur dans la hiérarchie de propriétaire sont remplacés en cas de substitution de métadonnées.Other callbacks as assigned to metadata for the dependency property as it existed higher in the owner hierarchy are replaced when the metadata is overridden.

Méthodes d’extension

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

Obtient un objet qui représente la méthode représentée par le délégué spécifié.Gets an object that represents the method represented by the specified delegate.

S’applique à

Voir aussi