Обычно ваше приложение полностью выполняется в ViewModels, а представления используются для того, чтобы пользователи могли дружественно взаимодействовать с ViewModels.
В вашем случае ViewModel может иметь свойство с именем CurrentPage
, которое связано с ContentControl.Content
в вашем представлении. Чтобы изменить страницы, команда GoToNewPage
установит для свойства CurrentPage
значение NewPageViewModel
.
Это заставит ContentControl
понять, что его привязка изменилась, и в процессе обновления привязки он поймет, что Content
изменился, и ему нужно использовать новый DataTemplate
, чтобы нарисовать этот контент .
<ContentControl Content="{Binding CurrentPage}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type local:HomePageViewModel}">
<local:HomePageView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NewPageViewModel}">
<local:NewPageView />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
У меня есть простой пример этого здесь , если вам интересно