Вы делаете все это задом наперед. Одной из основных причин использования MVVM является упрощение модульного тестирования, т. Е. Ваше приложение должно работать без создания каких-либо представлений!
Имея это в виду, обычный способ сопоставления двух в WPF - через DataTemplates, и ваш выбор структуры DI не должен иметь никакого значения. В основном вы делаете это:
<DataTemplate DataType="{x:Type vm:MyViewModelType">
<views:MyViewControl />
</DataTemplate>
Теперь все, что использует ContentPresenter (ListBoxes и т. Д.), Будет заполняться этим представлением всякий раз, когда его содержимое привязано к соответствующей модели представления. Вы также можете сделать это явно так:
<ContentControl Content="{Binding SomeViewModelProperty}" />
Если вы любите делать что-то нелегко, взгляните на учебники Джонатана Йейтса «Приключения в Xamarin Forms», сами страницы, к сожалению, давно ушли, но вы все равно можете прочитать все на Wayback машина . Это все Xamarin конечно, но очень легко портировать на WPF. Я использовал его в нескольких проектах, но в итоге заменил его на собственный DataTypeSelector, который только что реализовал шаблоны данных в стиле WPF.