DependencyObject.RegisterPropertyChangedCallback Metode
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.
Mendaftarkan fungsi pemberitahuan untuk mendengarkan perubahan pada DependencyProperty tertentu pada instans DependencyObject ini.
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
Parameter
Pengidentifikasi properti dependensi properti untuk mendaftar pemberitahuan yang diubah properti.
- callback
- DependencyPropertyChangedCallback
Panggilan balik berdasarkan delegasi DependencyPropertyChangedCallback , yang dipanggil sistem saat nilai properti yang ditentukan berubah.
Mengembalikan
Token yang mewakili panggilan balik, digunakan untuk mengidentifikasi panggilan balik dalam panggilan ke UnregisterPropertyChangedCallback.
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)
{
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
Gunakan RegisterPropertyChangedCallback untuk mendapatkan pemberitahuan yang diubah properti untuk properti dependensi yang sudah didefinisikan sebagai bagian dari kerangka kerja XAML. Ini berguna untuk properti di mana belum menjadi peristiwa kerangka kerja XAML yang sesuai yang melacak perubahan. Misalnya, FrameworkElement.Tag adalah properti dependensi kerangka kerja XAML yang ada, dan aplikasi Anda dapat melacak kapan nilai properti tersebut berubah karena beberapa input eksternal (seperti pengikatan data) telah mengubah nilai runtime properti tersebut pada instans objek tertentu yang merupakan bagian dari UI aplikasi Anda.
Untuk membatalkan pendaftaran panggilan balik, panggil UnregisterPropertyChangedCallback dan teruskan token yang dikembalikan oleh metode ini.
Anda biasanya tidak menggunakan RegisterPropertyChangedCallback untuk pemberitahuan pada properti dependensi kustom, karena properti dependensi kustom sudah memiliki cara untuk mendaftarkan handler yang diubah properti yang menyediakan lebih banyak data dalam arg peristiwa. Untuk informasi selengkapnya, lihat Properti dependensi kustom.