DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Methode

Definition

Überschreibt die Metadaten einer schreibgeschützten Abhängigkeitseigenschaft, die durch diesen Bezeichner einer Abhängigkeitseigenschaft dargestellt wird.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)

Parameter

forType
Type

Der Typ, für den diese Abhängigkeitseigenschaft vorhanden ist, sowie die Metadaten müssen überschrieben werden.The type on which this dependency property exists and metadata should be overridden.

typeMetadata
PropertyMetadata

Für diesen Typ angegebene Metadaten.Metadata supplied for this type.

Ausnahmen

Versuchte Überschreibung von Metadaten für eine Abhängigkeitseigenschaft mit Schreib- und Leseberechtigungen (kann nicht mit dieser Signatur ausgeführt werden).Attempted metadata override on a read-write dependency property (cannot be done using this signature).

Metadaten wurden für die Eigenschaft bereits festgelegt, da sie im bereitgestellten Typ bereits vorhanden sind.Metadata was already established for the property as it exists on the provided type.

Beispiele

Im folgenden Beispiel werden die Metadaten für eine vorhandene schreibgeschützte Abhängigkeits Eigenschaft, die von einer Klasse geerbt wird, überschrieben.The following example overrides metadata for an existing read-only dependency property that a class inherits. In diesem Fall bestand das Ziel des Szenarios darin, einen coerce-Wert Rückruf hinzuzufügen, den die Metadaten der Basis Eigenschaft nicht enthielten.In this case, the scenario goal was to add a coerce value callback that the base property metadata did not have. Sie können Metadaten auch aus anderen Gründen überschreiben, in denen das Überschreiben von Metadaten in der Regel angemessen ist (Ändern des Standardwerts, Hinzufügen von FrameworkPropertyMetadataOptions Werten usw.).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

Hinweise

Das Überschreiben von Metadaten für eine schreibgeschützte Abhängigkeits Eigenschaft erfolgt aus ähnlichen Gründen wie das Überschreiben von Metadaten für eine Abhängigkeits Eigenschaft mit Lese-/Schreibzugriff und ist auf den Zugriff auf der Schlüssel Ebene beschränkt, da in den Metadaten angegebene Verhalten das festgelegte Verhalten ändern kann (z.b. der Standardwert).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).

Wie bei den Abhängigkeits Eigenschaften mit Lese-/Schreibzugriff sollte das Überschreiben von Metadaten für eine schreibgeschützte Abhängigkeits Eigenschaft nur erfolgen, bevor diese Eigenschaft vom Eigenschaften System verwendet wird (Dies entspricht der Zeit, in der bestimmte Instanzen von Objekten, die die Eigenschaft registrieren, instanziiert werden).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). Aufrufe von OverrideMetadata sollten nur innerhalb der statischen Konstruktoren des Typs ausgeführt werden, der sich selbst als forType Parameter dieser Methode bereitstellt, oder für die entsprechende Initialisierung dieser Klasse.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.

Diese Methode leitet effektiv an die- OverrideMetadata Methode weiter und übergibt die- DependencyPropertyKey Instanz als Schlüsselparameter.This method effectively forwards to the OverrideMetadata method, passing the DependencyPropertyKey instance as the key parameter.

Gilt für:

Weitere Informationen