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;
long RegisterPropertyChangedCallback(DependencyProperty const& dp, DependencyPropertyChangedCallback const& callback);
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 die Benachrichtigung über Eigenschaftsänderungen registriert werden soll.

callback
DependencyPropertyChangedCallback

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

Gibt zurück

Int64

long long

long

Ein Token, das den Rückruf darstellt, der verwendet wird, um den Rückruf in Aufrufen von UnregisterPropertyChangedCallback zu identifizieren.

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 ist, das Änderungen nachverfolgt. Beispielsweise ist FrameworkElement.Tag eine vorhandene XAML-Framework-Abhä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 geändert hat instance, das Teil der 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.

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

Gilt für:

Weitere Informationen