CoerceValueCallback Délégué

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.

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

L'objet sur lequel existe la propriété. Lorsque le rappel est appelé, le système de propriétés passe cette valeur.

baseValue
Object

La nouvelle valeur de la propriété, avant toute tentative de contrainte.

Valeur renvoyée

Object

La valeur forcée (avec type approprié).

Exemples

L’exemple suivant inclut une implémentation de ce rappel pour forcer la valeur stockée d’une propriété de dépendance en fonction d’autres entrées, telles que la valeur d’une autre propriété. Dans ce cas, le rappel vérifie si la ShirtType propriété correspond à un type de chemise qui a des boutons ; si tel est le cas, il établit une couleur par défaut de départ pour le ButtonColor, si le type de chemise n’a pas de boutons, il force la ButtonColor valeur à une valeur de départ, ce qui fait que l’interface utilisateur (non affichée) supprime cette liste déroulante des choix effectifs.

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 des données peuvent être affectés à une propriété de dépendance par le biais de plusieurs techniques différentes. Chacune de ces techniques nécessite que vous créez d’abord un objet de métadonnées de propriété (PropertyMetadataou une classe dérivée telle que FrameworkPropertyMetadata). Créez l’objet de métadonnées à l’aide d’une signature de constructeur qui accepte le coerceValueCallback paramètre et affectez ce paramètre à votre gestionnaire de rappel. Ou construisez les métadonnées par n’importe quelle signature et définissez la CoerceValueCallback propriété avant de placer les métadonnées en cours d’utilisation.

Lorsque vous disposez de ces métadonnées, vous pouvez :

  • Définissez une nouvelle propriété de dépendance sur une nouvelle classe, en utilisant l’une ou l’autre signature de Register, en donnant les métadonnées comme typeMetadata valeur.

  • Remplacez les métadonnées (appel OverrideMetadata(Type, PropertyMetadata)) d’une propriété de dépendance existante lorsque vous dérivez de la classe propriétaire de la propriété de dépendance.

  • Ajoutez une propriété de dépendance existante à une nouvelle DependencyObject classe, à l’aide de nouvelles métadonnées, en appelant AddOwner(Type, PropertyMetadata).

Les implémentations de ce rappel doivent vérifier la valeur et baseValue déterminer en fonction de la valeur ou du type, s’il s’agit d’une valeur qui doit être plus contrainte.

La CoerceValueCallback propriété de dépendance est appelée chaque fois que le système de propriétés ou tout autre appelant appelle CoerceValue sur une DependencyObject instance, en spécifiant l’identificateur de cette propriété en tant que dp.

Les modifications apportées à la valeur de propriété peuvent provenir de tout participant possible au système de propriétés. Cela inclut les styles, l’invalidation générique, les déclencheurs, l’héritage des valeurs de propriété et le paramètre de valeur locale.

En règle générale, vous devez éviter de spécifier plusieurs CoerceValueCallback propriétés de dépendance pour une propriété de dépendance donnée (en remplaçant ou en ajoutant avec de nouvelles métadonnées pour une propriété de dépendance qui avait déjà un CoerceValueCallback). Un seul des rappels sera en mesure d’agir. Le rappel agissant sera celui qui a été appliqué à la classe la plus dérivée de l’héritage par rapport à l’appelant DependencyObject . D’autres rappels comme affectés aux métadonnées pour la propriété de dépendance, car il existait plus haut dans la hiérarchie propriétaire sont remplacés lorsque les métadonnées sont remplacées.

Méthodes d’extension

GetMethodInfo(Delegate)

Obtient un objet qui représente la méthode représentée par le délégué spécifié.

S’applique à

Voir aussi