ViewModelBase.cs 824 B

1234567891011121314151617181920212223
  1. using System.ComponentModel;
  2. using System.Runtime.CompilerServices;
  3. namespace LocalizationTool.ViewModels
  4. {
  5. /// <summary>ViewModel 基类:属性变更通知。</summary>
  6. public abstract class ViewModelBase : INotifyPropertyChanged
  7. {
  8. public event PropertyChangedEventHandler PropertyChanged;
  9. protected void OnPropertyChanged([CallerMemberName] string name = null) =>
  10. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
  11. /// <summary>设置字段并通知变更,返回是否有变化。</summary>
  12. protected bool Set<T>(ref T field, T value, [CallerMemberName] string name = null)
  13. {
  14. if (Equals(field, value)) return false;
  15. field = value;
  16. OnPropertyChanged(name);
  17. return true;
  18. }
  19. }
  20. }