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(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyPropertyChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyPropertyChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 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

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 implementasi PropertyChangedCallback yang menggunakan data peristiwa DependencyPropertyChangedEventArgs. 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();
    }

Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
                    ByVal args As DependencyPropertyChangedEventArgs)

    Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
    Dim newValue As Integer = args.NewValue

    ' Update the TextElement to the new value. 
    If ctl.TextElement IsNot Nothing Then
        ctl.TextElement.Text = newValue.ToString()
    End If

Keterangan

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

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 DependencyObject ini. Anda biasanya ingin melemparkannya ke jenis pemilik properti yang berubah. Jenis pemilik adalah jenis yang dirujuk berdasarkan nama dalam panggilan DependencyProperty.Register ; metadata tempat PropertyChangedCallback Anda 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 properti Ganda 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 nilai Ketebalan .

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 Helper pendamping yang menyediakan API perbandingan 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 di DependencyPropertyChangedEventArgs yang dilaporkan 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 nilai DependencyPropertyChangedEventArgs adalah dengan mendapatkannya dari parameter PropertyChangedCallback asli dan melewatinya saat Anda menembakkan 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