SukiObservableObject.cs 813 B

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