DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Method

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.Overrides the metadata of a read-only dependency property that is represented by this dependency property identifier.

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 Type Type

Type sur lequel cette propriété de dépendance est basée et dont les métadonnées doivent être substituées.The type on which this dependency property exists and metadata should be overridden.

typeMetadata
PropertyMetadata PropertyMetadata PropertyMetadata PropertyMetadata

Métadonnées fournies pour ce type.Metadata supplied for this 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).Attempted metadata override on a read-write dependency property (cannot be done using this signature).

Les métadonnées ont déjà été établies pour la propriété telle que définie par le type fourni.Metadata was already established for the property as it exists on the provided type.

Exemples

L’exemple suivant substitue les métadonnées pour une propriété de dépendance en lecture seule existante qui est héritée par une classe.The following example overrides metadata for an existing read-only dependency property that a class inherits. Dans ce cas, l’objectif du scénario était d’ajouter un rappel de valeur forcée que les métadonnées de propriété de base n’avaient pas.In this case, the scenario goal was to add a coerce value callback that the base property metadata did not have. Vous pouvez également substituer des métadonnées pour l’une des autres raisons pour lesquelles la substitution de métadonnées est généralement appropriée ( FrameworkPropertyMetadataOptions modification de la valeur par défaut, ajout de valeurs, etc.).You could also override metadata for any of the other reasons that overriding metadata is typically appropriate (changing default value, adding FrameworkPropertyMetadataOptions values, 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 à 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 du jeu ( valeur par défaut, par exemple).Overriding metadata on a read-only dependency property is done for similar reasons as overriding metadata on a read-write dependency property, and is restricted to access at the key level because behaviors specified in the metadata can change the set behavior (the default value, for instance).

Comme avec 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 avant que cette propriété soit placée en cours d’utilisation par le système de propriétés (cela équivaut au temps que des instances spécifiques d’objets inscrivent le la propriété est instanciée).As with read-write dependency properties, overriding metadata on a read-only dependency property should only be done prior to that property being placed in use by the property system (this equates to the time that specific instances of objects that register the property are instantiated). Les appels OverrideMetadata à doivent uniquement être effectués dans les constructeurs statiques du type qui se fournit lui- forType même en tant que paramètre de cette méthode, ou l’initialisation équivalente pour cette classe.Calls to OverrideMetadata should only be performed within the static constructors of the type that provides itself as the forType parameter of this method, or equivalent initialization for that class.

Cette méthode transfère efficacement à la OverrideMetadata méthode, en passant l' DependencyPropertyKey instance en tant que paramètre de clé.This method effectively forwards to the OverrideMetadata method, passing the DependencyPropertyKey instance as the key parameter.

S’applique à

Voir aussi