次の方法で共有


DependencyObject.RegisterPropertyChangedCallback メソッド

定義

この 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

パラメーター

dp
DependencyProperty

プロパティ変更通知に登録するプロパティの依存関係プロパティ識別子。

callback
DependencyPropertyChangedCallback

DependencyPropertyChangedCallback デリゲートに基づくコールバック。指定されたプロパティの値が変更されたときにシステムによって呼び出されます。

戻り値

Int64

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 しません。 詳しくは、「カスタム依存関係プロパティ」をご覧ください。

適用対象

こちらもご覧ください