DependencyObject.RegisterPropertyChangedCallback 方法

定义

注册一个通知函数,用于侦听此 DependencyObject 实例上特定 DependencyProperty 的更改。

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

参数

dp
DependencyProperty

要注册属性更改通知的属性的依赖属性标识符。

callback
DependencyPropertyChangedCallback

基于 DependencyPropertyChangedCallback 委托的回调,当指定属性的值发生更改时,系统会调用该委托。

返回

Int64

long long

long

表示回调的标记,用于标识 对 UnregisterPropertyChangedCallback 的调用中的回调。

示例

此示例演示如何使用 DependencyPropertyChangedCallback 委托侦听对 TextBlock 上的 Tag 属性的更改。

<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));
    }
}

注解

使用 RegisterPropertyChangedCallback 获取已定义为 XAML 框架一部分的依赖属性更改通知。 这对于属性非常有用,其中 不是跟踪更改的相应 XAML 框架事件。 例如, FrameworkElement.Tag 是现有的 XAML 框架依赖属性,你的应用可以跟踪该属性的值何时更改,因为某些外部输入 ((如数据绑定) )更改了该属性在应用 UI 的特定对象实例上的运行时值。

若要取消注册回调,请调用 UnregisterPropertyChangedCallback 并传入此方法返回的令牌。

通常不会将 RegisterPropertyChangedCallback 用于自定义依赖属性的通知,因为自定义依赖属性已经具有注册属性更改处理程序的方法,该处理程序在事件参数中提供更多数据。 有关详细信息,请参阅自定义的依赖属性

适用于

另请参阅