Вам не нужно использовать PRISM, но это может быть лучше.
Один из способов, которым я это сделал (и он небрежный), - это иметь страницу MainView с рамкой навигации, которая будет загружать первый вид при запуске.MainView должен быть Page, а не UserControl.Вам нужно иметь навигационный фрейм с отображениями uri в xaml и иметь фрейм, объявленный как shared / static в коде позади страницы MainView Page, а затем установить загруженное событие (в xaml) фрейма следующим образом:
Public Shared MainContentFrame As Frame
Private Sub MainContentFrameXaml_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs)
MainContentFrame = TryCast(sender, Frame)
End Sub
Тогда в viewmodel вы можете просто позвонить:
MainView.MainContentFrame.Navigate(New Uri("/SecondView", UriKind.Relative))
Это, вероятно, каким-то образом нарушает шаблон MVVM и не может быть хорошим способом сделать это, но это работает.Вот как я это делал, теперь я использую ПРИЗМУ.