随着我们mvvm绑定的功能越来越复杂,前面封装的简易mvvm类已经无法满足我们的需求,本节将对mvvm类进行升级,增加计算属性通知
优化后的mvvm通知类
cs
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (Equals(storage, value))
{
return false;
}
storage = value;
OnPropertyChanged(propertyName);
return true;
}
}
写一个计算类
cs
public class Rest_NGW
{
public double rest_key1(int i)
{
return 0.5;
}
}
在数据类中,list属性改变时,调用计算类来刷新test属性的值
cs
public class NGW_Modle : ObservableObject
{
Rest_NGW rest_NGW = new Rest_NGW();//计算类
private int i_list;
public int I_list
{
get { return i_list; }
set
{
if (SetProperty(ref i_list, value))
{
Test = rest_NGW.rest_key1(i_list);//更新Test属性的值
}
}
}
private double test;
public double Test
{
get { return test; }
set
{
if (SetProperty(ref test, value))
{
}
}
}
}