Make cross-platform app MVVM-Ready. Lightweight with only one small binary/file.
Get MvvmReady library from NuGet.
PM> Install-Package MvvmReady
It's a simple ICommand
implementation. Here is an example:
public ICommand HelloWorldCommand => new Command(() =>
{
Debug.WriteLine("Hello, world!");
});
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));
}
}
}
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>()
.
This work is licensed under MIT.