DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Méthode

Définition

Substitue 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 est basée et dont les métadonnées doivent être substituées.

typeMetadata
PropertyMetadata

Métadonnées fournies pour ce type.

Exceptions

A tenté de substituer des métadonnées sur une propriété de dépendance en lecture-écriture (cette opération ne peut pas être exécutée à l'aide de cette signature).

Les métadonnées ont déjà été établies pour la propriété telle que définie par le type fourni.

Exemples

L’exemple suivant remplace les métadonnées d’une propriété de dépendance en lecture seule existante héritée d’une classe. Dans ce cas, l’objectif de scénario était d’ajouter un rappel de valeur coerce que les métadonnées de propriété de base n’avaient pas. Vous pouvez également remplacer les métadonnées pour l’une des autres raisons pour lesquelles la substitution de 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 le remplacement des métadonnées sur une propriété de dépendance en lecture-écriture et est limitée à l’accès au niveau clé, car les comportements spécifiés dans les métadonnées peuvent modifier le comportement défini (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 ne doit être effectuée qu’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 à effectuer OverrideMetadata uniquement dans les constructeurs statiques du type qui se fournissent comme forType paramètre de cette méthode ou initialisation équivalente pour cette classe.

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

S’applique à

Voir aussi