Wpf 从主视图导航到另一个视图
我是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模型视图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>