CoreDataModelItem.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Runtime.CompilerServices;
  4. using InABox.Core;
  5. namespace comal.timesheets
  6. {
  7. public abstract class CoreDataModelItem : INotifyPropertyChanged
  8. {
  9. #region INotifyPropertyChanged
  10. public event PropertyChangedEventHandler PropertyChanged;
  11. protected void DoPropertyChanged(string propertyName)
  12. {
  13. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  14. }
  15. protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
  16. {
  17. if (EqualityComparer<T>.Default.Equals(field, value)) return false;
  18. field = value;
  19. DoPropertyChanged(propertyName);
  20. return true;
  21. }
  22. #endregion
  23. protected virtual void RowChanged()
  24. {
  25. }
  26. private CoreRow _row = null;
  27. public CoreRow Row
  28. {
  29. get => _row;
  30. set
  31. {
  32. _row = value;
  33. RowChanged();
  34. }
  35. }
  36. public ICoreDataModel Parent { get; set; }
  37. }
  38. }