Фреймы поддерживают встроенную навигационную инфраструктуру WPF, поэтому они являются хорошим выбором, если вы планируете использовать это. У него есть некоторые проблемы (по крайней мере, некоторые люди думают так, в том числе и я), но для простых / небольших приложений это будет хорошо. Конечно, они также будут работать, если вы захотите запустить собственную легкую навигационную систему, как я обычно это делаю. Я обычно перемещаюсь, отправляя экземпляры ViewModels вокруг и устанавливая их как содержимое окон или элементов управления содержимым, и позволяя DataTemplates «одевать» их так, как они определены в представлениях. Для более крупных проектов я бы всегда рекомендовал одну из замечательных платформ, которая включает навигационные системы, такие как Prism или Magellan.
В основном все зависит от ваших требований; Есть много способов сделать это правильно. Хорошо, что вы пытаетесь использовать MVVM, старайтесь придерживаться этого, и это, как правило, автоматически направит вас в правильном направлении.
Я бы предложил использовать док-библиотеку, такую как AvalonDock, чтобы немного оживить ваше приложение ... однако у меня есть горький опыт с этим, так как он не MVVM-дружественный. Недавно я провел большую часть недели, борясь с ним, чтобы сделать его достаточно полезным в сценарии MVVM, и я не уверен, что это когда-либо будет возможно. Могут быть и другие библиотеки, которые лучше справляются со своими задачами, но (полнофункциональный, как в Visual Studio) стыковка - сложная задача, поэтому, возможно, не идите туда. Извините, я, вероятно, почувствовал необходимость дать выход после разочарования AvalonDock.