Table of Contents

MVVM Pattern (v1.2)

For v2.0+, see v2.0 MVVM Pattern.

Registration Modes

Method View in DI ViewModel in DI
AddMvvmTransient AddTransient<TView>() AddTransient<TViewModel>()
AddMvvmHybrid AddTransient<TView>() AddSingleton<TViewModel>()
AddMvvmSingleton AddSingleton<TView>() AddSingleton<TViewModel>()
services.AddMvvmTransient<MainView, MainViewModel>();
services.AddMvvmHybrid<SettingsView, SettingsViewModel>();
services.AddMvvmSingleton<AboutView, AboutViewModel>();

ViewModel-First

ViewLocator resolves View from DI:

// ContentControl.Content = viewModelInstance
// → ViewLocator → sp.GetService<TView>()

ILifecycleAware

public partial class MainViewModel : ObservableObject, ILifecycleAware
{
    public Task OnLoadedAsync() => LoadDataAsync();
    public Task OnUnloaded() => SaveStateAsync();
}

Automatically hooked when View loads/unloads.