Skip to the content.

MvvmReady Logo

MvvmReady

Make cross-platform app MVVM-Ready. Lightweight with only one small binary/file.

MvvmReady latest version on NuGet MvvmReady total downloads on NuGet Follow me on X


Installation

Get MvvmReady library from NuGet.

PM> Install-Package MvvmReady

Features

Command

It’s a simple ICommand implementation. Here is an example:

public ICommand HelloWorldCommand => new Command(() =>
{
    Debug.WriteLine("Hello, world!");
});

ViewModelBase

It’s an abstract base class for ViewModels.

Use Set(ref variable, value) to set value and trigger PropertyChanged event.

Use RaisePropertyChanged() to trigger PropertyChanged event for current property.

Here is an example:

public class ProfileViewModel: ViewModelBase
{
    private string _name;
    public string Name
    {
        get => _name;
        set => Set(ref _name, value);
    }
    
    public int Age
    {
        get => DateTime.Now.Year - DateOfBirth.Year
    }
    
    private DateTime _dateOfBirth;
    public DateTime DateOfBirth
    {
        get => _dateOfBirth;
        set
        {
            Set(ref _dateOfBirth, value);
            RaisePropertyChanged(nameof(Age));
        }
    }
    
}

ServiceLocator

It’s a simple service locator.

You can register interface to implementation by using ServiceLocator.Current.Register<IInterface, Implementation>().

You can also register service to itself by using ServiceLocator.Current.Register<Service>().

You can register a singleton service by using ServiceLocator.Current.Register<IInterface>(() => MyService.Instance).

To get service object, use ServiceLocator.Current.Get<IService>().

License

This work is licensed under MIT.