using System.ComponentModel; using System.Runtime.CompilerServices; namespace GMCabsDriverAssistantSolution.ViewModels { public class BaseViewModel : INotifyPropertyChanged { #region Fields private bool isBusy = false; private string title = string.Empty; #endregion #region Properties public bool IsBusy { get => isBusy; set => SetProperty(ref isBusy, value); } public string Title { get => title; set => SetProperty(ref title, value); } #endregion protected bool SetProperty(ref T backingStore, T value, [CallerMemberName] string propertyName = "", Action onChanged = null) { if (EqualityComparer.Default.Equals(backingStore, value)) { return false; } backingStore = value; onChanged?.Invoke(); OnPropertyChanged(propertyName); return true; } #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string propertyName = "") { var changed = PropertyChanged; if (changed == null) { return; } changed.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion } }