2022-05-23 00:58:58 +08:00
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Runtime.CompilerServices;
|
|
|
|
|
|
2023-07-03 01:51:09 +08:00
|
|
|
namespace CMM.Library.Base;
|
|
|
|
|
|
|
|
|
|
public class PropertyBase : INotifyPropertyChanged
|
2022-05-23 00:58:58 +08:00
|
|
|
{
|
2023-07-03 01:51:09 +08:00
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
2022-05-23 00:58:58 +08:00
|
|
|
|
2023-07-03 01:51:09 +08:00
|
|
|
virtual internal protected void OnPropertyChanged(string propertyName)
|
|
|
|
|
{
|
|
|
|
|
if (this.PropertyChanged != null)
|
2022-05-23 00:58:58 +08:00
|
|
|
{
|
2023-07-03 01:51:09 +08:00
|
|
|
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
2022-05-23 00:58:58 +08:00
|
|
|
}
|
2023-07-03 01:51:09 +08:00
|
|
|
}
|
2022-05-23 00:58:58 +08:00
|
|
|
|
2023-07-03 01:51:09 +08:00
|
|
|
protected void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
|
|
{
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
|
}
|
2022-05-23 00:58:58 +08:00
|
|
|
|
2023-07-03 01:51:09 +08:00
|
|
|
protected void SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
|
|
|
|
|
{
|
|
|
|
|
if (object.Equals(storage, value)) return;
|
2022-05-23 00:58:58 +08:00
|
|
|
|
2023-07-03 01:51:09 +08:00
|
|
|
storage = value;
|
|
|
|
|
this.OnPropertyChanged(propertyName);
|
2022-05-23 00:58:58 +08:00
|
|
|
}
|
|
|
|
|
}
|