Freigeben über


DependencyPropertyChangedCallback Delegat

Definition

Stellt den Rückruf dar, der aufgerufen wird, wenn sich ein Eigenschaftswert ändert, für Eigenschaftsänderungsbenachrichtigungen, die bei der RegisterPropertyChangedCallback-Methode registriert sind.

public delegate void DependencyPropertyChangedCallback(DependencyObject ^ sender, DependencyProperty ^ dp);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1166556438, 10175, 19393, 172, 38, 148, 193, 96, 31, 58, 73)]
class DependencyPropertyChangedCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(1166556438, 10175, 19393, 172, 38, 148, 193, 96, 31, 58, 73)]
public delegate void DependencyPropertyChangedCallback(DependencyObject sender, DependencyProperty dp);
Public Delegate Sub DependencyPropertyChangedCallback(sender As DependencyObject, dp As DependencyProperty)

Parameter

sender
DependencyObject

Das Objekt instance, das die -Eigenschaft enthält, die für Benachrichtigungen mit Eigenschaftsänderungen registriert werden soll.

dp
DependencyProperty

Der Bezeichner der Abhängigkeitseigenschaft der Eigenschaft, die für Benachrichtigungen mit Änderung der Eigenschaft registriert werden soll.

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

In diesem Beispiel wird gezeigt, wie Sie einen DependencyPropertyChangedCallback-Delegaten verwenden, um auf Änderungen an der Tag-Eigenschaft in einem TextBlock zu lauschen.

<TextBlock x:Name="textBlock1" Text="Hello, world"/>
long tagToken;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    long tagToken = textBlock1.RegisterPropertyChangedCallback(TextBlock.TagProperty, tbTagChangedCallback);
    base.OnNavigatedTo(e);

    textBlock1.Tag = "name";
}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    textBlock1.UnregisterPropertyChangedCallback(TextBlock.TagProperty, tagToken);
    base.OnNavigatedFrom(e);
}

private void tbTagChangedCallback(DependencyObject sender, DependencyProperty dp)
{
    if (dp == TextBlock.TagProperty)
    {
       // These lines produce the same result.
       System.Diagnostics.Debug.WriteLine("The tag has been set to " + ((TextBlock)sender).Tag);
       System.Diagnostics.Debug.WriteLine("The tag has been set to " + sender.GetValue(dp));
    }
}

Hinweise

Die Parameterwerte des Delegaten basieren auf dem Parameter, der für den Aufruf registerPropertyChangedCallback angegeben wurde, der eine bestimmte Eigenschaft für Benachrichtigungen mit Geänderter Eigenschaft registriert hat, und auf dem instance, der sie aufgerufen hat.

Da der Rückruf über den dp-Parameter verfügt, der den geänderten Eigenschaftswert angibt, können Sie denselben Rückruf verwenden, um mehrere Eigenschaftsänderungen zu behandeln, und Ihre Logik kann Fälle für jede andere Eigenschaft schreiben.

Aus Leistungsgründen erhalten Sie kein OldValue / NewValue-Eigenschaftspaar aus einer PropertyChangedCallback-Methode wie aus DependencyPropertyChangedEventArgs. Der Eigenschaftswert wird vor dem Rückruf geändert. Sobald die Methode aufgerufen wurde, können Sie DependencyObject.GetValue aufrufen, um den neuen Wert abzurufen.

Gilt für:

Weitere Informationen