ViewModelBase.cs 775 B

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