public class ExampleViewModel : INotifyPropertyChanged
{
// INPC boilerplate, to be replaced perhaps with an MVVM toolkit later
public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public static bool CheckChange<T>(ref T oldValue, T newValue, [CallerMemberName] string propertyName = "")
{
if (!Equals(oldValue, newValue))
{
oldValue = newValue;
OnPropertyChanged(propertyName);
return true;
}
return false;
}
// end INPC boilerplate
private int _viewModelId;
public int ViewModelId { get => _viewModelId; set => CheckChange(ref _viewModelId, value); }
private float _viewModelRealAmount;
public float ViewModelRealAmount { get => _viewModelRealAmount; set => CheckChange(ref _viewModelRealAmount, value); }
private DateTimeOffset _viewModelTimestamp;
public DateTimeOffset ViewModelTimestamp { get => _viewModelTimestamp; set => CheckChange(ref _viewModelTimestamp, value); }
// TODO: On receive ExampleStruct, set properties to fire events if data has changed
}
public class ExampleViewModel : INotifyPropertyChanged
{
// INPC boilerplate, to be replaced perhaps with an MVVM toolkit later
public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public static bool CheckChange<T>(ref T oldValue, T newValue, [CallerMemberName] string propertyName = "")
{
if (!Equals(oldValue, newValue))
{
oldValue = newValue;
OnPropertyChanged(propertyName);
return true;
}
return false;
}
// end INPC boilerplate
private int _viewModelId;
public int ViewModelId { get => _viewModelId; set => CheckChange(ref _viewModelId, value); }
private float _viewModelRealAmount;
public float ViewModelRealAmount { get => _viewModelRealAmount; set => CheckChange(ref _viewModelRealAmount, value); }
private DateTimeOffset _viewModelTimestamp;
public DateTimeOffset ViewModelTimestamp { get => _viewModelTimestamp; set => CheckChange(ref _viewModelTimestamp, value); }
// TODO: On receive ExampleStruct, set properties to fire events if data has changed
}