DependencyObject.RegisterPropertyChangedCallback Metode

Definisi

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

dp
DependencyProperty

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

Int64

long long

long

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.

Berlaku untuk

Lihat juga