Cara Meningkatkan Acara mengenai Perubahan Nilai Harta
Penerangan Masalah:
Anda mahu untuk mencetuskan peristiwa apabila nilai harta tertentu, seperti ImageFullPath1, berubah. Walaupun INotifyPropertyChanged ialah penyelesaian yang diketahui, anda lebih suka pendekatan berasaskan peristiwa.
Jawapan:
Untuk melaksanakan pemberitahuan perubahan sifat menggunakan acara, gunakan antara muka INotifyPropertyChanged:
public class MyClass : INotifyPropertyChanged { // ... }
Antara muka INotifyPropertyChanged mentakrifkan a Acara PropertyChanged yang boleh dilanggan oleh pengguna. Untuk mencetuskan peristiwa ini, laksanakan kaedah OnPropertyChanged:
protected void OnPropertyChanged(PropertyChangedEventArgs e) { // ... } protected void OnPropertyChanged(string propertyName) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); }
Untuk sifat ImageFullPath1, kemas kini penetap seperti berikut:
public string ImageFullPath1 { get { ... } set { if (value != ImageFullPath1) { ImageFullPath1 = value; OnPropertyChanged(nameof(ImageFullPath1)); } } }
Sebagai alternatif, untuk sifat tertentu, anda boleh membuat acara tambahan :
protected void OnImageFullPath1Changed(EventArgs e) { // ... } public event EventHandler ImageFullPath1Changed;
Dalam penetap harta, tambah OnImageFullPath1Changed(EventArgs.Empty) selepas OnPropertyChanged.
Kod yang Diperbaiki dengan .NET 4.5:
Dengan .NET 4.5, anda boleh menggunakan CallersetemberNameAt more
protected void OnPropertyChanged( [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "") { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); }
Atas ialah kandungan terperinci Bagaimana untuk Mencetuskan Peristiwa Apabila Nilai Harta Berubah dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!