WPF MVVM中的View-Model广泛使用INotifyPropertyChanged接口(INPC)。View-Model中,如果有大量的属性需要实现INPC,直接编码是件非常痛苦和乏味的事情。使用PropertyChanged.Fody可以轻松解决问题。
PropertyChanged.Fody 支持具有继承关系的类。
基类BaseClass实现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;
}
}
派生类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");
}
测试输出