DependencyPropertyChangedCallback 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示属性值更改时调用的回调,用于使用 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
保存属性以注册属性更改通知的对象实例。
要注册属性更改通知的属性的依赖属性标识符。
- 属性
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 来检索新值。