ViewModel.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. namespace Flyinsono.DBCopy.Tool
  2. {
  3. /// <summary>
  4. /// Base view model
  5. /// </summary>
  6. public abstract class ViewModel : NotificationObject
  7. {
  8. private string _description;
  9. private bool _isVisible = true;
  10. private bool _isEnable = true;
  11. private bool _isDisposed;
  12. /// <summary>
  13. /// Description, display on UI
  14. /// </summary>
  15. public string Description
  16. {
  17. get { return _description; }
  18. set
  19. {
  20. if (_description != value)
  21. {
  22. _description = value;
  23. OnPropertyChanged(() => Description);
  24. }
  25. }
  26. }
  27. /// <summary>
  28. /// A Flag indicates this UI is visible
  29. /// </summary>
  30. public bool IsVisible
  31. {
  32. get { return _isVisible; }
  33. set
  34. {
  35. if (_isVisible != value)
  36. {
  37. _isVisible = value;
  38. OnIsVisible();
  39. OnPropertyChanged(() => IsVisible);
  40. }
  41. }
  42. }
  43. /// <summary>
  44. /// A Flag indicates this UI is enabled
  45. /// </summary>
  46. public bool IsEnabled
  47. {
  48. get { return _isEnable; }
  49. set
  50. {
  51. if (_isEnable != value)
  52. {
  53. _isEnable = value;
  54. OnIsEnabledChanged();
  55. OnPropertyChanged(() => IsEnabled);
  56. }
  57. }
  58. }
  59. protected virtual void OnIsEnabledChanged()
  60. {
  61. //TODO On IsEnabled changed, child class can override implement it
  62. }
  63. protected virtual void OnIsVisible()
  64. {
  65. //child class can override implement it
  66. }
  67. public void Dispose()
  68. {
  69. if (!_isDisposed)
  70. {
  71. DoDispose();
  72. _isDisposed = true;
  73. }
  74. }
  75. protected virtual void DoDispose()
  76. {
  77. //implement it in child class
  78. }
  79. }
  80. }