Представьте, что у вас есть MainViewModel, который привязывается к главному экрану. Пусть MainViewModel является одноэлементным классом, и в нем есть свойство CurrentViewModel (реализовано INotifypropertyChanged). Теперь вы можете создать экземпляр любого конкретного ViewModel (на основе команды / клика) и назначить экземпляр, как показано ниже
MainViewModel.Instance.CurrentViewModel = new SomeViewModel();
Так что теперь ваш главный экран XAML будет иметь
<Window>
<ContentControl Content="{Binding CurrentViewModel,Source={x:static vm:MainViewModel.Instance}}"
</Window>
Вам необходимо определить правильные DataTemplates для каждой ViewModel (View to ViewModel Mapping). Это будет выглядеть как
<DataTemplate DataType="{x:Type vm:SomeViewModel}">
<view:SomeView/>
</DataTemplate>
Здесь SomeView - это UserControl, соответствующий SomeVieModel.
Надеюсь, это очень кратко объясняет архитектуру MVVM