未简化前:
private bool _test = true;
public bool Test
{
get { return test; }
set
{
if (value != test)
{
test = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Test)));
}
}
}
新建类ObservableObject,并实现INotifyPropertyChanged:
public class ObservableObject:INotifyPropertyChanged
{
public ObservableObject()
{
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(nameof(propertyName)));
}
protected bool Set<T>(ref T field, T newValue, [CallerMemberName] string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field,newValue))
{
return false;
}
field = newValue;
RaisePropertyChanged(propertyName);
return true;
}
}
简化后:
private bool _test = true;
public bool Test
{
get { return test;}
set { Set(ref _test,value);}
}