Я закончил тем, что реализовал таким же образом, как Джош Смитс; Однако я немного упростил вещи.
Все представления являются пользовательскими, кроме MainWindow.
MainWindow содержит ContentTemplate, который связан со свойством, содержащим ссылку на один UserControl в модели представления.
Затем у меня есть ApplicationController, отвечающий за управление представлением и жизненным циклом модели представления.
Базовый класс ViewModel, используемый каждым представлением, содержит ссылку на IApplicationController.
Затем MainWindowViewModel вызывает ApplicationController для загрузки нового представления и т. Д.
Все еще не 100% на этом подходе, поэтому приветствую любые дальнейшие предложения.