Tingkatkan Acara untuk Perubahan Nilai Hartanah
Apabila bekerja dengan hartanah, anda mungkin menghadapi keperluan untuk mencetuskan acara pada bila-bila masa nilai hartanah perubahan.
Soalan:
Terdapat sifat bernama ImageFullPath1 yang memerlukan peristiwa untuk dipecat apabila nilainya berubah. Walaupun terdapat INotifyPropertyChanged, keperluannya adalah untuk melaksanakan penyelesaian menggunakan peristiwa.
Jawapan:
Antara muka INotifyPropertyChanged sememangnya berdasarkan peristiwa. Ia mempunyai ahli tunggal, PropertyChanged, yang merupakan acara yang membolehkan pengguna melanggan.
Walau bagaimanapun, penyelesaian yang dicadangkan oleh Richard tidak boleh dipercayai. Pelaksanaan yang lebih selamat ialah:
public class MyClass : INotifyPropertyChanged { private string imageFullPath; protected void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, e); } protected void OnPropertyChanged(string propertyName) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public string ImageFullPath { get { return imageFullPath; } set { if (value != imageFullPath) { imageFullPath = value; OnPropertyChanged("ImageFullPath"); } } } public event PropertyChangedEventHandler PropertyChanged; }
Ciri-ciri Pelaksanaan ini:
Acara Khusus Harta Tambahan:
Jika anda juga ingin mencipta acara untuk perubahan dalam sifat tertentu, seperti ImageFullPath, anda boleh tambah:
protected void OnImageFullPathChanged(EventArgs e) { EventHandler handler = ImageFullPathChanged; if (handler != null) handler(this, e); } public event EventHandler ImageFullPathChanged;
Panggil OnImageFullPathChanged(EventArgs.Empty) selepas OnPropertyChanged("ImageFullPath").
CallerMemberAttribute dalam .Net 4.5:
protected void OnPropertyChanged( [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "") { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public string ImageFullPath { get { return imageFullPath; } set { if (value != imageFullPath) { imageFullPath = value; OnPropertyChanged(); } } }
Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Peristiwa untuk Perubahan Nilai Harta dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!