DependencyObject.RegisterPropertyChangedCallback 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注册一个通知函数,用于侦听此 DependencyObject 实例上特定 DependencyProperty 的更改。
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
参数
要注册属性更改通知的属性的依赖属性标识符。
- callback
- DependencyPropertyChangedCallback
基于 DependencyPropertyChangedCallback 委托的回调,当指定属性的值发生更改时,系统会调用该委托。
返回
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
通知,因为自定义依赖属性已经具有注册属性更改处理程序的方法,该处理程序在事件参数中提供更多数据。 有关详细信息,请参阅自定义的依赖属性。