InternalViewModelBase.cs 894 B

12345678910111213141516171819202122232425262728
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Runtime.CompilerServices;
  4. namespace Avalonia.Dialogs.Internal
  5. {
  6. public class InternalViewModelBase : 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. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  15. return true;
  16. }
  17. return false;
  18. }
  19. protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
  20. {
  21. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  22. }
  23. }
  24. }