ViewModelBase.cs 831 B

12345678910111213141516171819202122232425
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Runtime.CompilerServices;
  4. namespace MiniMvvm
  5. {
  6. public class ViewModelBase : INotifyPropertyChanged
  7. {
  8. public event PropertyChangedEventHandler PropertyChanged;
  9. protected bool RaiseAndSetIfChanged<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
  10. {
  11. if (!EqualityComparer<T>.Default.Equals(field, value))
  12. {
  13. field = value;
  14. RaisePropertyChanged(propertyName);
  15. return true;
  16. }
  17. return false;
  18. }
  19. protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
  20. => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  21. }
  22. }