Я опубликовал эту статью в Code Project о том, как создать расширяемое приложение WPF, используя MVVM и MEF для расширяемости. Однако, если вы посмотрите внимательно, я использовал MEF и для DI.
Приложение полностью MVVM и использует только DataTemplates (и случайное окно) для Views, как в статье Джоша Смита. WPF позаботится о применении правильного View для правильной ViewModel для вас. Это сладко.
Он использует MEF, чтобы части могли «найти» друг друга. Таким образом, ViewModel для элемента меню «View» находит все элементы меню, которые должны находиться в подменю, используя точки расширения, и ViewModel для каждой из этих «находок» ViewModel, которые они должны передать менеджеру макета, используя композиционные очки. Они также «находят» службу диспетчера макетов, используя элементарный локатор служб (MEF). Пример меню View - это почти то, о чем вы говорите с вложенными моделями представления. Круто то, что они даже не знают друг о друге до времени выполнения.