This is an open source package designed to define MVVM client application based on XAML (WinUI, UWP, WPF, or Xamarin)
Nuget | Github

Inherit from ViewModelBase<T> and just define your properties like this:
using devoft.ClientModel;

public class DownloadViewModel : ViewModelBase<DownloadViewModel>
    public int Progress 
        set => SetValue(value);
        get => GetValue<int>();
An error has occurred. This application may no longer respond until reloaded. Reload 🗙