DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Méthode

Définition

Remplace les métadonnées d’une propriété de dépendance en lecture seule représentée par cet identificateur de propriété de dépendance.

public:
 void OverrideMetadata(Type ^ forType, System::Windows::PropertyMetadata ^ typeMetadata);
public void OverrideMetadata(Type forType, System.Windows.PropertyMetadata typeMetadata);
member this.OverrideMetadata : Type * System.Windows.PropertyMetadata -> unit
Public Sub OverrideMetadata (forType As Type, typeMetadata As PropertyMetadata)

Paramètres

forType
Type

Type sur lequel cette propriété de dépendance existe et les métadonnées doivent être remplacées.

typeMetadata
PropertyMetadata

Métadonnées fournies pour ce type.

Exceptions

Tentative de remplacement des métadonnées sur une propriété de dépendance en lecture-écriture (impossible d’utiliser cette signature).

Les métadonnées ont déjà été établies pour la propriété telle qu’elle existe sur le type fourni.

Exemples

L’exemple suivant remplace les métadonnées d’une propriété de dépendance en lecture seule existante qu’une classe hérite. Dans ce cas, l’objectif du scénario était d’ajouter un rappel de valeur cocédant que les métadonnées de propriété de base n’avaient pas. Vous pouvez également remplacer les métadonnées pour toutes les autres raisons pour lesquelles la substitution des métadonnées est généralement appropriée (modification de la valeur par défaut, ajout FrameworkPropertyMetadataOptions de valeurs, etc.)

static Fishbowl() {
  Aquarium.AquariumSizeKey.OverrideMetadata(
    typeof(Aquarium),
    new PropertyMetadata(
      double.NaN,
      null,
      new CoerceValueCallback(CoerceFishbowlAquariumSize)
    )
  );
}

static object CoerceFishbowlAquariumSize(DependencyObject d,Object baseValue)
{
    //Aquarium is 2D, a Fishbowl is a round Aquarium, so the Size we return is the ellipse of that height/width rather than the rectangle
    Fishbowl fb = (Fishbowl)d;
    //other constraints assure that H,W are positive
    return Convert.ToInt32(Math.PI * (fb.Width / 2) * (fb.Height / 2));
}
Shared Sub New()
    Aquarium.AquariumSizeKey.OverrideMetadata(GetType(Aquarium), New PropertyMetadata(Double.NaN, Nothing, New CoerceValueCallback(AddressOf CoerceFishbowlAquariumSize)))
End Sub

Private Shared Function CoerceFishbowlAquariumSize(ByVal d As DependencyObject, ByVal baseValue As Object) As Object
    'Aquarium is 2D, a Fishbowl is a round Aquarium, so the Size we return is the ellipse of that height/width rather than the rectangle
    Dim fb As Fishbowl = CType(d, Fishbowl)
    'other constraints assure that H,W are positive
    Return Convert.ToInt32(Math.PI * (fb.Width / 2) * (fb.Height / 2))
End Function

Remarques

La substitution de métadonnées sur une propriété de dépendance en lecture seule est effectuée pour des raisons similaires, comme la substitution de métadonnées sur une propriété de dépendance en lecture-écriture, et est limitée à l’accès au niveau de la clé, car les comportements spécifiés dans les métadonnées peuvent modifier le comportement défini (la valeur par défaut, par exemple).

Comme pour les propriétés de dépendance en lecture-écriture, la substitution de métadonnées sur une propriété de dépendance en lecture seule doit être effectuée uniquement avant que cette propriété soit placée en cours d’utilisation par le système de propriétés (cela équivaut au moment où des instances spécifiques d’objets qui inscrivent la propriété sont instanciées). Les appels à ne OverrideMetadata doivent être effectués que dans les constructeurs statiques du type qui se fournit en tant que forType paramètre de cette méthode ou initialisation équivalente pour cette classe.

Cette méthode transfère efficacement à la OverrideMetadata méthode, en passant l’instance DependencyPropertyKey en tant que paramètre de clé.

S’applique à

Voir aussi