DependencyPropertyChangedCallback 委托

定义

表示属性值更改时调用的回调,用于使用 RegisterPropertyChangedCallback 技术注册的属性更改通知。

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)

参数

sender
DependencyObject

保存属性以注册属性更改通知的对象实例。

dp
DependencyProperty

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

属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

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

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

注解

委托的参数值基于提供给 RegisterPropertyChangedCallback 调用的参数,该调用为属性更改通知注册了特定属性,以及调用它的实例。

由于回调具有用于标识哪些属性值已更改的 dp 参数,因此可以使用同一回调来处理多个属性更改的情况,并且逻辑可以为每个不同属性编写事例。

出于性能原因,无法像从 DependencyPropertyChangedChangedEventArgs 那样从 PropertyChangedCallback 方法获取 OldValue / NewValue 属性对。 属性值在回调之前会更改,因此调用方法后,可以调用 DependencyObject.GetValue 来检索新值。

适用于

另请参阅