using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace ToolKit { public abstract class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler? PropertyChanged; private void NotifyPropertyChange(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected virtual void setProperty(T member, T value, Action action, [CallerMemberName] string propertyName = "") { if (EqualityComparer.Default.Equals(member, value)) { return; } member = value; action(); NotifyPropertyChange(propertyName); } protected virtual void setProperty(ref T member, T value, [CallerMemberName] string propertyName = "") { if (EqualityComparer.Default.Equals(member, value)) { return; } member = value; NotifyPropertyChange(propertyName); } } }