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 委派來接聽TextBlockTag屬性的變更。

<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 參數,可識別哪些屬性值已變更,所以您可以使用相同的回呼來處理多個屬性變更的案例,而您的邏輯可以為每個不同的屬性寫入案例。

基於效能考慮,您不會從PropertyChangedCallback方法取得OldValue / NewValue屬性組,就像從DependencyPropertyChangedEventArgs一樣。 屬性值會在回呼之前變更,因此在叫用 方法之後,您可以呼叫 DependencyObject.GetValue 來擷取新的值。

適用於

另請參閱