这种类型在你的控制之下吗?你可以添加一个
FooUpdating
/
FooUpdated
两个事件?另一种选择是编写一个自定义属性模型
TypeDescriptionProvider
类似于(更新为显示3.5方法;有关2.0示例,请参阅历史记录):
class MyType : INotifyPropertyChanged, INotifyPropertyChanging
{
public event PropertyChangedEventHandler PropertyChanged;
public event PropertyChangingEventHandler PropertyChanging;
protected void UpdateField<T>(ref T field, T newValue, string propertyName)
{
if (!EqualityComparer<T>.Default.Equals(field, newValue))
{
OnPropertyChanging(propertyName);
field = newValue;
OnPropertyChanged(propertyName);
}
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this,
new PropertyChangedEventArgs(propertyName));
}
protected void OnPropertyChanging(string propertyName)
{
PropertyChangingEventHandler handler = PropertyChanging;
if (handler != null) handler(this,
new PropertyChangingEventArgs(propertyName));
}
private string name;
public string Name
{
get { return name; }
set { UpdateField(ref name, value, "Name"); }
}
private DateTime dateOfBirth;
public DateTime DateOfBirth
{
get { return dateOfBirth; }
set { UpdateField(ref dateOfBirth, value, "DateOfBirth"); }
}
}