Wpf 从主视图导航到另一个视图

Wpf 从主视图导航到另一个视图,wpf,wpftoolkit,Wpf,Wpftoolkit,我是WPF新手,我正在使用WPF模型视图ViewModel Toolkit 0.1来掌握WPF 我有一个相当简单的问题,但我想不通 如何从主视图上的菜单项显示新视图 我的代码是这样的: MainView.xaml <Menu DockPanel.Dock="Top"> <MenuItem Header="_File"> <MenuItem Command="{Binding NewPage}" Header="New Page"

我是WPF新手,我正在使用
WPF模型视图ViewModel Toolkit 0.1
来掌握WPF

我有一个相当简单的问题,但我想不通

如何从主视图上的菜单项显示新视图

我的代码是这样的:

MainView.xaml

<Menu DockPanel.Dock="Top">
   <MenuItem Header="_File">
      <MenuItem Command="{Binding NewPage}" Header="New Page" 
                                   InputGestureText="Ctrl-N" />
   </MenuItem>
</Menu>

我应该在GoToNewPage中写些什么来显示newPage.xaml?

通常您的应用程序完全在ViewModels中运行,视图用于允许用户以友好的方式与ViewModels交互

在您的情况下,ViewModel可能有一个名为
CurrentPage
的属性,该属性绑定到视图中的
ContentControl.Content
。要更改页面,
GoToNewPage
命令将
CurrentPage
属性设置为
NewPageViewModel

这将导致
ContentControl
意识到其绑定已更改,并且在更新绑定的过程中,它将意识到
内容
已更改,需要使用新的
数据模板
来绘制该内容

<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>


如果您感兴趣,我有一个简单的例子

什么是页面、对话框、窗口或类似tabitem的东西?这是一个新的wpfPage。xamlit说“local”是一个未声明的名称空间。你知道我遗漏了什么吗?@asdfg你需要在你的代码顶部定义
local
名称空间。显示的示例代码假定
视图
视图模型
都位于同一名称空间中,并且该名称空间通过
xmlns:local=“clr namespace:MyNamespace”
映射到
local
,这是使用Resharper的众多原因中的一个,如果您在XAML中引用一个类型而不提供它的(XML)名称空间,它将为您建议一个名称空间,如果需要,甚至可以创建一个新的名称空间声明和前缀。
<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>