DependencyPropertyChangedEventArgs Kelas
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.
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
- 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:
- 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 data peristiwa DependencyPropertyChangedEventArgs 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 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. |