DependencyPropertyChangedCallback Delegasikan
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili panggilan balik yang dipanggil saat nilai properti berubah, untuk pemberitahuan perubahan properti yang terdaftar dengan teknik 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)
Parameter
- sender
- DependencyObject
Instans objek yang menyimpan properti untuk mendaftar pemberitahuan yang diubah properti.
Pengidentifikasi properti dependensi properti untuk mendaftar pemberitahuan yang diubah properti.
- Atribut
Persyaratan Windows
Rangkaian perangkat |
Windows 10 (diperkenalkan dalam 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)
|
Contoh
Contoh ini menunjukkan cara menggunakan delegasi DependencyPropertyChangedCallback untuk mendengarkan perubahan pada properti Tag pada TextBlock.
<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));
}
}
Keterangan
Nilai parameter delegasi didasarkan pada parameter yang diberikan kepada pemanggilan RegisterPropertyChangedCallback yang mendaftarkan properti tertentu untuk pemberitahuan yang diubah properti, dan instans yang memanggilnya.
Karena panggilan balik memiliki parameter dp yang mengidentifikasi nilai properti mana yang berubah, Anda dapat menggunakan panggilan balik yang sama untuk menangani beberapa kasus yang diubah properti, dan logika Anda dapat menulis kasus untuk setiap properti yang berbeda.
Untuk alasan performa, Anda tidak mendapatkan pasangan properti OldValue / NewValue dari metode PropertyChangedCallback seperti yang Anda lakukan dari DependencyPropertyChangedEventArgs. Nilai properti diubah sebelum panggilan balik, jadi setelah metode dipanggil, Anda dapat memanggil DependencyObject.GetValue untuk mengambil nilai baru.