DependencyPropertyChangedCallback 代理人
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
RegisterPropertyChangedCallback 手法に登録されているプロパティ変更通知に対して、プロパティ値が変更されたときに呼び出されるコールバックを表します。
public delegate void DependencyPropertyChangedCallback(DependencyObject ^ sender, DependencyProperty ^ dp);
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(4032150305, 8603, 23308, 128, 93, 188, 174, 218, 225, 84, 88)]
public delegate void DependencyPropertyChangedCallback(DependencyObject sender, DependencyProperty dp);
Public Delegate Sub DependencyPropertyChangedCallback(sender As DependencyObject, dp As DependencyProperty)
パラメーター
- sender
- DependencyObject
プロパティ変更通知に登録する プロパティを保持する オブジェクト インスタンス。
プロパティ変更通知に登録するプロパティの依存関係プロパティ識別子。
- 属性
例
この例では、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 パラメーターがあるため、同じコールバックを使用して複数のプロパティ変更ケースを処理できます。また、ロジックでは、異なるプロパティごとにケースを記述できます。
パフォーマンス上の理由から、DependencyPropertyChangedEventArgs の場合と同様に、PropertyChangedCallback メソッドから OldValue / NewValue プロパティ ペアを取得することはできません。 プロパティ値はコールバックの前に変更されるため、メソッドが呼び出されたら、 DependencyObject.GetValue を呼び出して新しい値を取得できます。