using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; namespace EPD.Data { public class NotifyObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void Set(ref T property, T value, [CallerMemberName] string memberName = "") { property = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName)); } public void RaisePropertyChanged(string memberName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName)); } } public class NotifyControl : UserControl, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void Set(ref T field, T newValue, [CallerMemberName] string propertyName = "") { field = newValue; RaisePropertyChanged(propertyName); } public void RaisePropertyChanged(string memberName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName)); } } public class NotifyWindow : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void Set(ref T field, T newValue, [CallerMemberName] string propertyName = "") { field = newValue; RaisePropertyChanged(propertyName); } public void RaisePropertyChanged(string memberName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(memberName)); } } }