Я использую класс, который я дублирую, «Экран», который обрабатывает триаду MVVM. Я начал с того, что V вводили в виртуальную машину, затем виртуальную машину в качестве ресурса в виртуальной памяти, но в итоге концепция Screen работала для меня лучше всего. Это позволяет мне использовать V и VM без связи друг с другом. Это также отвлекает другие функциональные возможности в моей общей структуре представления. Вот пример конструктора для моего класса Screen:
public CatalogItemScreen(IUnityContainer container) : base(container)
{
this.ViewModel = Container.Resolve<ICatalogItemViewModel>();
this.View = Container.Resolve<CatalogItemView>();
this.View.DataContext = this.ViewModel;
}
Обратите внимание, что VM создается на экране, здесь создается V, а 2 связаны друг с другом. В этом примере используются Unity и Prism, но для этого нет необходимости.