DependencyPropertyChangedCallback Delegasikan

Definisi

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.

dp
DependencyProperty

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.

Berlaku untuk

Lihat juga