有时我们需要以异步的方式监控对象属性的变化,并根据变化作出相应的处理。通过将被监控类实现INotifyPropertyChanged接口的方式可以简洁的达到这一目的。
Code
public class 被监控类 : INotifyPropertyChanged
{
//声明事件
public event PropertyChangedEventHandler PropertyChanged;
//定义用于触发事件的方法
private void NotifyPropertyChanged(string info)
{
if(PropertyChanged != null){
//触发事件
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
//在属性set时,调用触发事件的方法
public string Property1{
set {
if(value != this._property1){NotifyPropertyChanged("info");}
}
}
}
public class 监控类{
//定义事件处理方法
static void DoItWhenPropertyChanged(object sender, PropertyChangedEventArgs e){}
public static void Main(string[] args){
//添加事件的处理方法
被监控对象.PropertyChanged +=
new PropertyChangedEventHandler(DoItWhenPropertyChanged);
}
}
public class 被监控类 : INotifyPropertyChanged
{
//声明事件
public event PropertyChangedEventHandler PropertyChanged;
//定义用于触发事件的方法
private void NotifyPropertyChanged(string info)
{
if(PropertyChanged != null){
//触发事件
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
//在属性set时,调用触发事件的方法
public string Property1{
set {
if(value != this._property1){NotifyPropertyChanged("info");}
}
}
}
public class 监控类{
//定义事件处理方法
static void DoItWhenPropertyChanged(object sender, PropertyChangedEventArgs e){}
public static void Main(string[] args){
//添加事件的处理方法
被监控对象.PropertyChanged +=
new PropertyChangedEventHandler(DoItWhenPropertyChanged);
}
}