C#/WPF: PropertyChanged for all Properties in ViewModel?
You can indicate all properties have changed by using null
or string.Empty
for the property name in PropertyChangedEventArgs
. This is mentioned in the documentation for PropertyChanged.
One other solution I used to tackle the problem of: first setting the value and then calling the PropertyChangedEventArgs
is by adding a Set
function in my ViewModelBase
which looks like this:
public class ViewModelBase : INotifyPropertyChanged{ protected bool Set<T>(ref T backingField, T value, [CallerMemberName] string propertyname = null) { // Check if the value and backing field are actualy different if (EqualityComparer<T>.Default.Equals(backingField, value)) { return false; } // Setting the backing field and the RaisePropertyChanged backingField = value; RaisePropertyChanged(propertyname); return true; }}
Instead of doing this:
public string Name { get { return PersonEntity.Name; } set { PersonEntity.Name = value; RaisePropertyChanged("Name");}
You can now achieve the same by doing this:
public string Name { get { return PersonEntity.Name; } set { Set(ref PersonEntity.Name,value);}