You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.1 KiB

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>(T member, T value, Action action, [CallerMemberName] string propertyName = "")
{
if (EqualityComparer<T>.Default.Equals(member, value)) { return; }
member = value;
action();
NotifyPropertyChange(propertyName);
}
protected virtual void setProperty<T>(ref T member, T value, [CallerMemberName] string propertyName = "")
{
if (EqualityComparer<T>.Default.Equals(member, value)) { return; }
member = value;
NotifyPropertyChange(propertyName);
}
}
}