DependencyPropertyChangedCallback 代理人
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示屬性值變更時所叫用的回呼,針對向 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
保存屬性以註冊屬性變更通知的物件實例。
要註冊屬性變更通知之屬性的相依性屬性識別碼。
- 屬性
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
範例
此範例示範如何使用 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 參數,可識別哪些屬性值已變更,所以您可以使用相同的回呼來處理多個屬性變更的案例,而您的邏輯可以為每個不同的屬性寫入案例。
基於效能考慮,您不會從PropertyChangedCallback方法取得OldValue / NewValue屬性組,就像從DependencyPropertyChangedEventArgs一樣。 屬性值會在回呼之前變更,因此在叫用 方法之後,您可以呼叫 DependencyObject.GetValue 來擷取新的值。