ViewModelBase.cs 860 B

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