Возможно, вы захотите попробовать некоторые из множества фреймворков mvvm. Мне лично нравится mvvm light, потому что он работает в silverlight и WPF, и его легко использовать http://mvvmlight.codeplex.com/ (без принадлежности)
Вот хорошее сравнение / контраст некоторых основных фреймворков: Какую фреймворк для MVVM мне следует использовать?
Большинство фреймворков имеют систему обмена сообщениями, которая предоставляет возможность отправлять обновления между представлением и моделью представления, а также между представлениями. Большинство платформ также предоставляют стандартные сообщения, которые также обрабатывают ящики сообщений MVVM (я знаю, что MVVM Light делает).
Для обработки переключения между представлениями в WPF я использую DataTemplates и Content controls
В виде .xaml добавляю
<ContentControl Content="{Binding ActiveViewModel}" />
и это место, где будет отображаться внедренный вид. ActiveViewModel - это объект для viewModel, который содержит выбранную viewModel.
В ResourceDictionary я добавляю что-то вроде:
<DataTemplate DataType="{x:Type ViewModelNameSpace:ViewModelClassName}">
<ViewNameSpace:ViewClasName/>
</DataTemplate>
Наконец, в ViewModel я установил свойство ActiveViewModel (то есть настройку для уведомления пользовательского интерфейса об изменениях через INotifyPropertyChanged) для экземпляра viewModel, который я хотел бы использовать.
ActiveViewModel = new ViewModelClass();