Freigeben über


DependencyPropertyChangedEventArgs Klasse

Definition

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
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
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:

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.

Gilt für:

Weitere Informationen