WPF MVVM中的View-Model廣泛使用INotifyPropertyChanged接口(INPC)。View-Model中,如果有大量的屬性需要實(shí)現INPC,直接編碼是件非常痛苦和乏味的事情。使用PropertyChanged.Fody可以輕松解決問(wèn)題。
PropertyChanged.Fody 支持具有繼承關(guān)系的類(lèi)。
基類(lèi)BaseClass實(shí)現INotifyPropertyChanged
public class BaseClass : INotifyPropertyChanged{ public string BasePropertyString { get; set; } public DateTime? BasePropertyNullableDateTime { get; set; } public event PropertyChangedEventHandler PropertyChanged; public virtual void Clear() { BasePropertyString = null; BasePropertyNullableDateTime = null; }}
派生類(lèi)DerivedClass繼承自BaseClass
public class DerivedClass: BaseClass{ public float? DerivedClassPropertyNullableFloat { get; set; } public override void Clear() { base.Clear(); DerivedClassPropertyNullableFloat = null; }}
測試
static void Main(string[] args){ DerivedClass dc = new DerivedClass(); dc.PropertyChanged += Dc_PropertyChanged; dc.DerivedClassPropertyNullableFloat = 69.3f; dc.BasePropertyString = "文本信息"; dc.BasePropertyNullableDateTime = DateTime.Now; Console.WriteLine("---------Clear()-----------"); dc.Clear(); Console.ReadLine(); } static void Dc_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e){ Console.WriteLine($"{e.PropertyName} Changed");}
測試輸出
-----------------------------------------------------------------------------
聯(lián)系客服