NotifyObject.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.ComponentModel;
  2. using System.Runtime.CompilerServices;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. namespace EPD.Data
  6. {
  7. public class NotifyObject : INotifyPropertyChanged
  8. {
  9. public event PropertyChangedEventHandler PropertyChanged;
  10. protected void Set<T>(ref T property, T value, [CallerMemberName] string memberName = "")
  11. {
  12. property = value;
  13. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName));
  14. }
  15. public void RaisePropertyChanged(string memberName)
  16. {
  17. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName));
  18. }
  19. }
  20. public class NotifyControl : UserControl, INotifyPropertyChanged
  21. {
  22. public event PropertyChangedEventHandler PropertyChanged;
  23. public void Set<T>(ref T field, T newValue, [CallerMemberName] string propertyName = "")
  24. {
  25. field = newValue;
  26. RaisePropertyChanged(propertyName);
  27. }
  28. public void RaisePropertyChanged(string memberName)
  29. {
  30. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName));
  31. }
  32. }
  33. public class NotifyWindow : Window, INotifyPropertyChanged
  34. {
  35. public event PropertyChangedEventHandler PropertyChanged;
  36. public void Set<T>(ref T field, T newValue, [CallerMemberName] string propertyName = "")
  37. {
  38. field = newValue;
  39. RaisePropertyChanged(propertyName);
  40. }
  41. public void RaisePropertyChanged(string memberName)
  42. {
  43. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName));
  44. }
  45. }
  46. }