Imagine that you have got a MainViewModel which binds to the main screen.Let the MainViewModel be a singleton class and it has a 'CurrentViewModel' property (INotifypropertyChanged implemented) in it. Now you can instantiate any particular ViewModel (based on a Command/Click) and assign the instance as below
MainViewModel.Instance.CurrentViewModel = new SomeViewModel();
So now your main screen XAML will have
<Window>
<ContentControl Content="{Binding CurrentViewModel,Source={x:static vm:MainViewModel.Instance}}"
</Window>
You need to define proper DataTemplates for each ViewModels (View to ViewModel Mapping). That will look like
<DataTemplate DataType="{x:Type vm:SomeViewModel}">
<view:SomeView/>
</DataTemplate>
Here SomeView is the UserControl corresponds to the SomeVieModel.
Hope this explains the MVVM architecture very briefly