CoerceValueCallback Délégué
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit un modèle pour une méthode appelée chaque fois qu’une valeur de propriété de dépendance est réévaluée ou que la contrainte est spécifiquement demandée.
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
Objet sur lequel la propriété existe. Lorsque le rappel est appelé, le système de propriétés transmet cette valeur.
- baseValue
- Object
Nouvelle valeur de la propriété, avant toute tentative de contrainte.
Valeur renvoyée
Valeur coerced (avec le 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 c’est le cas, il établit une couleur par défaut de départ pour le ButtonColor, si le type de chemise n’a aucun bouton, il force la ButtonColor valeur à une valeur de départ, ce qui entraîne la suppression de 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 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. Vous pouvez également construire les métadonnées par une signature et définir 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
typeMetadatavaleur.Remplacez les métadonnées (appel OverrideMetadata(Type, PropertyMetadata)) pour 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 dans baseValue et déterminer en fonction de la valeur ou du type si c’est une valeur qui doit être plus contrainte.
La CoerceValueCallback propriété d’une dépendance est appelée à tout moment 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é comme étant le 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 de valeur de propriété et le paramètre de valeur locale.
En règle générale, vous devez éviter de spécifier plusieurs CoerceValueCallback 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 attribué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
| Nom | Description |
|---|---|
| GetMethodInfo(Delegate) |
Obtient un objet qui représente la méthode représentée par le délégué spécifié. |