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

<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,因為自訂相依性屬性已經有方法可以註冊屬性變更的處理常式,在事件引數中提供更多資料。 如需詳細資訊,請參閱自訂相依性屬性

適用於

另請參閱