Table of Contents

Interface IViewModelRegistry

Namespace
Dmnk.Blazor.Mvvm
Assembly
Dmnk.Blazor.Mvvm.dll

Registry for associating ViewModel types with their corresponding View types.

public interface IViewModelRegistry

Examples

ViewModels:

class MySpecificViewModel1 : MyAbstractViewModel { }
class MySpecificViewModel2 : MyAbstractViewModel { }

Views:

@inherits MvvmComponentBase<MySpecificViewModel1>
<h3>View for MySpecificViewModel1</h3>

DI Setup:

services.AddSingleton(ViewModelRegistration.Create<MySpecificViewModel1, MyComponent1>());
services.AddSingleton(ViewModelRegistration.Create<MySpecificViewModel2, MyComponent2>());
services.AddSingleton<IViewModelRegistry, ViewModelRegistry>();

In Component:

@inject IEnumerable<MyAbstractViewModel> ViewModels

@foreach (var vm in ViewModels)
{
    <RegisteredViewFor Vm="vm"/>
}

Methods

GetViewForViewModelDynamic(Type)

Like GetViewForViewModel<TViewModel>(TViewModel), but accepts a Type parameter instead of an instance.

Type? GetViewForViewModelDynamic(Type viewModelType)

Parameters

viewModelType Type

Returns

Type

GetViewForViewModel<TViewModel>(TViewModel)

Retrieves the registered View type for a given ViewModel type, or null if no registration exists.

Type? GetViewForViewModel<TViewModel>(TViewModel viewModel) where TViewModel : INotifyPropertyChanged

Parameters

viewModel TViewModel

Returns

Type

Type Parameters

TViewModel