BindableBase.cs 830 B

123456789101112131415161718192021222324252627
  1. using System.ComponentModel;
  2. using System.Runtime.CompilerServices;
  3. namespace MECF.Framework.UI.Client.ClientBase
  4. {
  5. public abstract class BindableBase : INotifyPropertyChanged
  6. {
  7. public event PropertyChangedEventHandler PropertyChanged;
  8. protected virtual void Set<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
  9. {
  10. if (Equals(storage, value))
  11. return;
  12. storage = value;
  13. OnPropertyChanged(propertyName);
  14. }
  15. protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
  16. {
  17. PropertyChangedEventHandler eventHandler = this.PropertyChanged;
  18. eventHandler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  19. }
  20. }
  21. }