Вы можете создать ViewModel
для каждой страницы, которую хотите отобразить, и сделать их унаследованными от одного и того же класса
public class Page1 : PageViewModel
public class Page2 : PageViewModel
В MainViewModel
вы можете создать список страниц, которые хотите отобразить, и текущая отображаемая страница
public PageViewModel CurrentPage
public List<PageViewModel> AllPages
И теперь, если у вашего MainWindow есть доступ к этим полям, вы можете привязать страницу и отобразить ее
<ContentPresenter Content="{Binding CurrentPage}"/>
Я не уверен, что вы можете поставить Frame
в ContentPresenter
, вы можете попробовать изменить Frame на UserControl
.