DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überschreibt die Metadaten einer schreibgeschützten Abhängigkeitseigenschaft, die durch diesen Bezeichner einer Abhängigkeitseigenschaft dargestellt wird.
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.
- typeMetadata
- PropertyMetadata
Für diesen Typ angegebene Metadaten.
Ausnahmen
Versuchte Überschreibung von Metadaten für eine Abhängigkeitseigenschaft mit Schreib- und Leseberechtigungen (kann nicht mit dieser Signatur ausgeführt werden).
Metadaten wurden für die Eigenschaft bereits festgelegt, da sie im bereitgestellten Typ bereits vorhanden sind.
Beispiele
Im folgenden Beispiel werden Metadaten für eine vorhandene schreibgeschützte Abhängigkeitseigenschaft außer Kraft gesetzt, die eine Klasse erbt. In diesem Fall bestand das Szenarioziel darin, einen Rückruf des Coerce-Werts hinzuzufügen, über den die Basiseigenschaftenmetadaten nicht verfügen. Sie können Metadaten auch aus anderen Gründen außer Kraft setzen, aus denen Metadaten in der Regel überschrieben werden (Ändern des Standardwerts, Hinzufügen von FrameworkPropertyMetadataOptions Werten usw.)
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 Außerkraftsetzen von Metadaten für eine schreibgeschützte Abhängigkeitseigenschaft erfolgt aus ähnlichen Gründen wie das Außerkraftsetzen von Metadaten für eine Lese-Schreib-Abhängigkeitseigenschaft und ist auf den Zugriff auf die Schlüsselebene beschränkt, da verhaltensweisen, die in den Metadaten angegeben sind, das Setverhalten ändern können (z. B. der Standardwert).
Wie bei Lese-Schreib-Abhängigkeitseigenschaften sollte das Außerkraftsetzen von Metadaten für eine schreibgeschützte Abhängigkeitseigenschaft nur erfolgen, bevor diese Eigenschaft vom Eigenschaftensystem verwendet wird (dies entspricht dem Zeitpunkt, zu dem bestimmte Instanzen von Objekten, die die Eigenschaft registrieren, instanziiert werden). Aufrufe sollten OverrideMetadata nur innerhalb der statischen Konstruktoren des Typs ausgeführt werden, die sich als forType
Parameter dieser Methode oder eine entsprechende Initialisierung für diese Klasse bereitstellt.
Diese Methode leitet die Methode effektiv an die OverrideMetadata Methode weiter, wobei die DependencyPropertyKey Instanz als Schlüsselparameter übergeben wird.