DependencyPropertyChangedEventArgs Klasse
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.
Stellt Daten für eine PropertyChangedCallback-Implementierung bereit, die aufgerufen wird, wenn eine Abhängigkeitseigenschaft ihren Wert ändert. Stellt auch Ereignisdaten für das Control.IsEnabledChanged-Ereignis und jedes andere Ereignis bereit, das den DependencyPropertyChangedEventHandler-Delegat verwendet.
public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyPropertyChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyPropertyChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
- Vererbung
- Attribute
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Dieses Beispiel zeigt eine PropertyChangedCallback-Implementierung , die die DependencyPropertyChangedEventArgs-Ereignisdaten verwendet. Insbesondere wird NewValue verwendet, um eine verwandte Eigenschaft festzulegen, die den zugrunde liegenden numerischen DependencyProperty-Wert als Text in einem TextBlock-Teil eines zusammengesetzten Steuerelements anzeigt.
private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
NumericUpDown ctl = (NumericUpDown)obj;
Int32 newValue = (Int32)args.NewValue;
// Update the TextElement to the new value.
if (ctl.TextElement != null)
{
ctl.TextElement.Text = newValue.ToString();
}
Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
ByVal args As DependencyPropertyChangedEventArgs)
Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
Dim newValue As Integer = args.NewValue
' Update the TextElement to the new value.
If ctl.TextElement IsNot Nothing Then
ctl.TextElement.Text = newValue.ToString()
End If
Hinweise
DependencyPropertyChangedEventArgs stellt Daten für zwei verschiedene Situationen bereit, die Änderungen an Abhängigkeitseigenschaftenwerten beinhalten:
- Situationsbasierte Rückrufinformationen, die von einem PropertyChangedCallback für eine benutzerdefinierte Abhängigkeitseigenschaft verwendet werden. Dies ist der häufigere Fall.
- Ereignisdaten für ein Ereignis, das auf DependencyPropertyChangedEventHandler basiert. Dies ist weniger häufig, da das einzige Windows-Runtime-Ereignis, das diesen Delegat verwendet, das Control.IsEnabledChanged-Ereignis ist. Weitere Informationen zur Verwendung der DependencyPropertyChangedEventArgs-Ereignisdaten in diesem Fall finden Sie unter DependencyPropertyChangedEventHandler oder Control.IsEnabledChangedChanged.
Eine PropertyChangedCallback-Implementierung ist ein optionaler Teil der Eigenschaftenmetadaten, die Sie beim Registrieren einer Abhängigkeitseigenschaft bereitstellen. Der Rückruf wird intern vom Abhängigkeitseigenschaftssystem aufgerufen. Weitere Informationen zu Abhängigkeitseigenschaften im Allgemeinen finden Sie unter Übersicht über benutzerdefinierte Abhängigkeitseigenschaften und Abhängigkeitseigenschaften.
In der Regel definieren Sie die Methode mit privatem oder internem Zugriff. Die Methode muss statisch sein. Da die Methode statisch ist, ist der DependencyObject-Parameter (d) des PropertyChangedCallback-Delegaten wichtig. Dadurch wird das spezifische Abhängigkeitsobjekt instance, an dem sich die Eigenschaft ändert, identifiziert. Für viele Vorgänge, z. B. das Korrigieren oder Coercing eines Werts oder das Ändern eines anderen berechneten Eigenschaftswerts als Antwort auf dasselbe Objekt, verweisen Sie auf dieses DependencyObject. In der Regel sollten Sie es in den Besitzertyp der eigenschaft umwandeln, die sich ändert. Der Besitzertyp ist der Typ, auf den im Aufruf "DependencyProperty.Register" verwiesen wird. Die Metadaten, in denen Ihr PropertyChangedCallback Eigenschaftenmetadaten zugewiesen ist, sind Teil desselben Aufrufs.
Achten Sie auf die Möglichkeit der Rekursion. Wenn Sie den Wert einer Abhängigkeitseigenschaft ändern, für die PropertyChangedCallback aufgerufen wird, wird sie erneut aufgerufen. Wenn Sie beispielsweise einen Rückruf für eine Double-Eigenschaft erstellt haben, bei der der Rückruf den Wert immer durch 2 geteilt hat, wird dieser Rückruf rekursiv aufgerufen, und Ihre App befindet sich in einer Endlosschleife.
Es ist legal, dass zwei oder mehr unterschiedliche Abhängigkeitseigenschaften Rückrufe definieren, um sich gegenseitig zu ändern, aber achten Sie erneut darauf, keine unbeabsichtigte Zirkelabhängigkeit zu erstellen, die es nicht ermöglicht, die Werte zu stabilisieren.
Ein PropertyChangedCallback wird nur aufgerufen, wenn sich OldValue und NewValue in den Ereignisdaten unterscheiden.
OldValue und NewValue sind nicht typisiert, sodass für jeden Vergleich, den Sie durchführen, wahrscheinlich eine Umwandlung erforderlich ist. Viele Abhängigkeitseigenschaftenwerte verwenden einen Werttyp, was bedeutet, dass Sie sich für die Vergleiche auf die Operatoren oder eine andere API des Werttyps verlassen. Diese Funktionalität ist in der Regel für die Struktur verfügbar, die einen Wert darstellt, als Hilfsprogramm-API. Mit der sprachspezifischen Hilfsprogramm-API für einen Dickenwert können Sie beispielsweise Dickenwerte vergleichen.
Hinweis
Wenn Sie mit C++ programmieren, unterstützen einige der Windows-Runtime-Strukturen keine Nichtdatenmember. Daher werden keine Operatoren oder ein anderes Hilfsprogramm unterstützt. Für diese gibt es eine Hilfsprogrammklasse , die eine Vergleichs-API bereitstellt, die C++-Code verwenden kann. Verwenden Sie beispielsweise die ColorHelper-Klasse , um Color-Werte zu vergleichen.
Verwenden von DependencyPropertyChangedEventArgs für ein benutzerdefiniertes Ereignis
Ein benutzerdefinierter Steuerelementimplementierer kann die Verwendung von DependencyPropertyChangedEventHandler als Delegattyp in Erwägung ziehen, wenn ein benutzerdefiniertes Ereignis infolge einer Änderung der Abhängigkeitseigenschaft ausgelöst wird. Sie können ein solches Ereignis nur innerhalb des Kontexts eines PropertyChangedCallbacks auslösen. Dies liegt daran, dass sich der geänderte Wert (die Eigenschaft, der alte und der neue Wert) in den DependencyPropertyChangedEventArgs befinden sollte, die für das Ereignis auf Eigenschaftssystemebene gemeldet werden. Es gibt jedoch keine Konstruktoren für DependencyPropertyChangedEventArgs, und keine der zugehörigen Eigenschaften ist festgelegt. Daher besteht die einzige Möglichkeit zum Abrufen eines DependencyPropertyChangedEventArgs-Werts darin, ihn aus den ursprünglichen PropertyChangedCallback-Parametern abzurufen und ihn beim Auslösen des benutzerdefinierten Ereignisses zu übergeben.
Eigenschaften
NewValue |
Ruft den Wert der Abhängigkeitseigenschaft nach der gemeldeten Änderung ab. |
OldValue |
Ruft den Wert der Abhängigkeitseigenschaft vor der gemeldeten Änderung ab. |
Property |
Ruft den Bezeichner für die Abhängigkeitseigenschaft ab, für die die Änderung des Werts aufgetreten ist. |