Bagikan melalui


DependencyPropertyChangedEventArgs Kelas

Definisi

Menyediakan data untuk implementasi PropertyChangedCallback yang dipanggil saat properti dependensi mengubah nilainya. Juga menyediakan data peristiwa untuk peristiwa Control.IsEnabledChanged dan peristiwa lain yang menggunakan delegasi DependencyPropertyChangedEventHandler .

public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
Warisan
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
Atribut

Contoh

Contoh ini menunjukkan implementasi PropertyChangedCallback yang menggunakan DependencyPropertyChangedEventArgs data peristiwa. Secara khusus, ia menggunakan NewValue untuk mengatur properti terkait, yang menampilkan nilai DependencyProperty numerik yang mendasar sebagai teks, di bagian TextBlock dari kontrol komposit.

private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown ctl = (NumericUpDown)obj;
    Int32 newValue = (Int32)args.NewValue;

    // Update the TextElement to the new value.
    if (ctl.TextElement != null)
    {
        ctl.TextElement.Text = newValue.ToString();
    }

Keterangan

DependencyPropertyChangedEventArgs menyediakan data untuk dua situasi berbeda yang melibatkan perubahan pada nilai properti dependensi:

  • Informasi panggilan balik situasional seperti yang digunakan oleh PropertyChangedCallback untuk properti dependensi kustom. Ini adalah kasus yang lebih umum.
  • Data peristiwa untuk peristiwa berdasarkan DependencyPropertyChangedEventHandler. Ini kurang umum karena satu-satunya peristiwa Windows Runtime yang menggunakan delegasi ini adalah peristiwa Control.IsEnabledChanged . Untuk informasi selengkapnya tentang cara menggunakan DependencyPropertyChangedEventArgs data peristiwa dalam hal ini, lihat DependencyPropertyChangedEventHandler atau Control.IsEnabledChanged.

Implementasi PropertyChangedCallback adalah bagian opsional dari metadata properti yang Anda berikan saat mendaftarkan properti dependensi. Panggilan balik dipanggil oleh sistem properti dependensi secara internal. Untuk informasi selengkapnya tentang properti dependensi secara umum, lihat Properti dependensi kustom dan Gambaran umum properti Dependensi.

Biasanya Anda menentukan metode dengan akses privat atau internal. Metode harus statis. Karena metode ini statis, parameter DependencyObject (d) dari delegasi PropertyChangedCallback penting. Itulah yang mengidentifikasi instans objek dependensi tertentu tempat properti berubah. Untuk banyak operasi, seperti mengoreksi atau memaksakan nilai, atau mengubah nilai properti terhitung lain sebagai respons pada objek yang sama, Anda akan mereferensikan ini DependencyObject. Anda biasanya ingin melemparkannya ke jenis pemilik properti yang berubah. Jenis pemilik adalah jenis yang dirujuk berdasarkan nama dalam panggilan DependencyProperty.Register ; metadata tempat Anda PropertyChangedCallback ditetapkan ke metadata properti adalah bagian dari panggilan yang sama.

Waspadai kemungkinan untuk rekursi. Jika Anda mengubah nilai properti dependensi tempat PropertyChangedCallback dipanggil, properti akan dipanggil lagi. Misalnya, jika Anda membuat panggilan balik untuk Double properti di mana panggilan balik selalu membagi nilai dengan 2, panggilan balik tersebut akan dipanggil secara rekursif dan aplikasi Anda akan berada dalam perulangan tak terbatas.

Secara hukum memiliki dua atau lebih properti dependensi yang berbeda menentukan panggilan balik untuk saling mengubah, tetapi sekali lagi berhati-hatilah untuk tidak membuat dependensi melingkar yang tidak disengaja yang tidak memungkinkan nilai untuk stabil.

PropertyChangedCallback hanya dipanggil jika OldValue dan NewValue dalam data peristiwa berbeda.

OldValue dan NewValue tidak dikemas, jadi perbandingan apa pun yang Anda lakukan mungkin memerlukan cast. Banyak nilai properti dependensi menggunakan jenis nilai, yang berarti Anda akan mengandalkan operator atau API lain dari jenis nilai untuk membuat perbandingan. Fungsionalitas tersebut biasanya tersedia pada struktur yang mewakili nilai, sebagai API utilitas. Misalnya, API utilitas khusus bahasa pada nilai Ketebalan memungkinkan Anda membandingkan Thickness nilai.

Catatan

Jika Anda memprogram menggunakan C++, beberapa struktur Windows Runtime tidak mendukung anggota nondata, jadi jangan mendukung operator atau utilitas lainnya. Untuk ini, ada kelas pendamping yang menyediakan API perbandingan Helper yang dapat digunakan kode C++. Misalnya, gunakan kelas ColorHelper untuk membandingkan nilai Warna .

Menggunakan DependencyPropertyChangedEventArgs untuk peristiwa kustom

Pelaksana kontrol kustom mungkin mempertimbangkan untuk menggunakan DependencyPropertyChangedEventHandler sebagai jenis delegasi jika peristiwa kustom diaktifkan sebagai akibat dari perubahan nilai properti dependensi. Anda hanya dapat mengaktifkan peristiwa seperti itu dari dalam konteks PropertyChangedCallback. Ini karena nilai yang berubah (properti, nilai lama dan baru) harus berada dalam yang dilaporkan DependencyPropertyChangedEventArgs untuk peristiwa di tingkat sistem properti. Tetapi tidak ada konstruktor untuk DependencyPropertyChangedEventArgs dan tidak ada propertinya yang dapat diatur, jadi satu-satunya cara untuk mendapatkan DependencyPropertyChangedEventArgs nilai adalah dengan mendapatkannya dari parameter asli PropertyChangedCallback dan melewatinya saat Anda mengaktifkan peristiwa kustom Anda.

Properti

NewValue

Mendapatkan nilai properti dependensi setelah perubahan yang dilaporkan.

OldValue

Mendapatkan nilai properti dependensi sebelum perubahan yang dilaporkan.

Property

Mendapatkan pengidentifikasi untuk properti dependensi tempat perubahan nilai terjadi.

Berlaku untuk

Lihat juga