Нет ничего автоматического c в рамках net.
Вы можете смягчить проблему, используя сначала модель просмотра и таблицы данных. Вот как я обычно работаю в приложении с одним окном.
У меня есть словарь ресурсов, объединенный в app.xaml, который связывает пользовательский элемент управления с моделью просмотра по типу.
Вы можете увидеть Здесь используется самая базовая c версия:
https://social.technet.microsoft.com/wiki/contents/articles/52485.wpf-tips-and-tricks-using-contentcontrol-instead-of-frame-and-page-for-navigation.aspx
<DataTemplate DataType="{x:Type local:LoginViewModel}">
<local:LoginView/>
</DataTemplate>
Навигация осуществляется путем установки свойства CurrentView в mainwindowviewmodel для экземпляра модели просмотра. Это связано с содержимым элемента управления содержимым в MainWindow. Табличка данных затем создаст шаблон для соответствующего пользовательского элемента управления.
Никакие навигационные сервисы и модели просмотра, которые должны быть одиночными, не могут быть кэшированы в объектах, экземплярах mainwindowviewmodel.
Тогда у вас будет «только» mainwindowviewmodel. У ручного создания экземпляра mainwindowviewmodel есть свои плюсы. Таким образом, вы можете контролировать, когда происходит создание дорогостоящего экземпляра. Не все это делается автоматически, поскольку эта модель просмотра требует множества сервисов через ее ctor.
Вы можете использовать любой DI, который вам нравится, для разрешения зависимостей при создании экземпляров различных моделей просмотра. Или просто шаблон посредника с ленивым синглтоном предоставляет экземпляры, кэшированные внутри себя.
Конечно, вы могли бы написать что-нибудь.
Дело в том, что вы, вероятно, собираетесь переписывать код, который очень похоже на то, что кто-то уже написал. Но поскольку у вас, скорее всего, нет 6 месяцев, выделенных для работы по замене фреймворка, ваша версия, вероятно, будет намного проще.
Caliburn micro использует соглашения об именах для связывания моделей и представлений. Вы могли бы написать что-то подобное и использовать отражение.
Или, может быть, вы могли бы go вернуться к своему боссу и обсудить его проблему. Лично я не фанат Prism из-за ее сложности. Может быть, у него такая проблема. Может быть, более приемлемый фреймворк вроде mvvmlight будет более приемлемым.