DependencyObject.RegisterPropertyChangedCallback メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この 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
パラメーター
プロパティ変更通知に登録するプロパティの依存関係プロパティ識別子。
- callback
- DependencyPropertyChangedCallback
DependencyPropertyChangedCallback デリゲートに基づくコールバック。指定されたプロパティの値が変更されたときにシステムによって呼び出されます。
戻り値
UnregisterPropertyChangedCallback の呼び出しでコールバックを識別するために使用されるコールバックを表すトークン。
例
この例では、DependencyPropertyChangedCallback デリゲートを使用して、TextBlock の Tag プロパティの変更をリッスンする方法を示します。
<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 を使用しません。 詳しくは、「カスタム依存関係プロパティ」をご覧ください。