Freigeben über


DependencyObject.RegisterPropertyChangedCallback Methode

Definition

Registriert eine Benachrichtigungsfunktion zum Lauschen auf Änderungen an einer bestimmten DependencyProperty für dieses DependencyObject-instance.

public:
 virtual long long RegisterPropertyChangedCallback(DependencyProperty ^ dp, DependencyPropertyChangedCallback ^ callback) = RegisterPropertyChangedCallback;
public long RegisterPropertyChangedCallback(DependencyProperty dp, DependencyPropertyChangedCallback callback);
function registerPropertyChangedCallback(dp, callback)
Public Function RegisterPropertyChangedCallback (dp As DependencyProperty, callback As DependencyPropertyChangedCallback) As Long

Parameter

dp
DependencyProperty

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

callback
DependencyPropertyChangedCallback

Ein Rückruf basierend auf dem DependencyPropertyChangedCallback-Delegat , den das System aufruft, wenn sich der Wert der angegebenen Eigenschaft ändert.

Gibt zurück

Int64

long long

Ein Token, das den Rückruf darstellt, der zum Identifizieren des Rückrufs in Aufrufen von UnregisterPropertyChangedCallback verwendet wird.

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)
{
    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

Verwenden Sie RegisterPropertyChangedCallback, um Benachrichtigungen zu Eigenschaftenänderungen für Abhängigkeitseigenschaften abzurufen, die bereits als Teil des XAML-Frameworks definiert sind. Dies ist nützlich für Eigenschaften, bei denen noch kein entsprechendes XAML-Frameworkereignis vorhanden war, das Änderungen nachverfolgt. Beispielsweise ist FrameworkElement.Tag eine vorhandene XAML-Frameworkabhängigkeitseigenschaft, und Ihre App könnte nachverfolgen, wann sich der Wert dieser Eigenschaft ändert, da eine externe Eingabe (z. B. eine Datenbindung) den Laufzeitwert dieser Eigenschaft für ein bestimmtes Objekt instance geändert hat, das Teil Ihrer App-Benutzeroberfläche ist.

Um die Registrierung des Rückrufs aufzuheben, rufen Sie UnregisterPropertyChangedCallback auf, und übergeben Sie das von dieser Methode zurückgegebene Token.

Sie verwenden RegisterPropertyChangedCallback in der Regel nicht für Benachrichtigungen für eine benutzerdefinierte Abhängigkeitseigenschaft, da benutzerdefinierte Abhängigkeitseigenschaften bereits eine Möglichkeit zum Registrieren eines Handlers mit geänderter Eigenschaft haben, der mehr Daten in den Ereignisargumenten bereitstellt. Weitere Informationen finden Sie unter Benutzerdefinierte Abhängigkeitseigenschaften.

Gilt für:

Weitere Informationen