Я один из разработчиков Catel, который является фреймворком с открытым исходным кодом MVVM.Мы поддерживаем несколько сервисов, которые содержат как реальную, так и тестовую реализацию сервисов.Таким образом, если вам нужно показать окно сообщения, вы можете сделать это:
var messageService = GetService<IMessageService>();
messageService.Show("This is a message");
Конечно, в модульном тестовом варианте этой службы окно фактического сообщения не будет отображаться, но вы можете добавитьожидаемые результаты, так что вы можете на самом деле проверить пользователя, отвечающего OK или отменить.
То же самое для службы навигации:
var navigationService = GetService<INavigationService>();
navigationService.Navigate("/UI/Pages/MyNewPage.xaml");
// OR
navigationService.Navigate<MyViewModel>();
На мой взгляд, это путь, по которому вам нужно идти, и хорошофреймворки, такие как Caliburn.Micro и Catel поддерживают это из коробки.