使用MVVM的WPF导航

我试图按照这篇文章中提供的答案,但我必须错过一些微不足道的东西。 我已将我的DataTemplate定义为App.xaml ,如下所示:

         

然后,在我的MainWindow.xaml我定义了以下代码:

       

MainViewModel的代码包含一个属性CurrentView和一个ICommand因此我可以切换视图。 定义如下:

 public class MainViewModel : BaseViewModel { private BaseViewModel _currentView; public MainViewModel() { CurrentView = new HomeViewModel(); } public BaseViewModel CurrentView { get { return _currentView; } set { if (_currentView != value) { _currentView = value; RaiseChangedEvent("CurrentView"); } } } public ICommand SwitchView { get { return new CommandHandler(() => SwitchBlower()); } } protected void SwitchBlower() { CurrentView = new BlowerViewModel(); } } 

在我的HomeView.xaml ,我定义了一个链接到MainViewModel的按钮来执行SwitchView ICommand 。 如下所示。

   This is the homeview 

当我启动应用程序时,它不会注册该事件,并且单击该按钮不会触发事件以更改视图。 我已经尝试在ICommand get和函数调用本身中设置断点。 起初,我想我可能需要在我的数据模板中定义MainViewModel ,但这样做会导致以下错误(即使项目构建正常)

不能把一个窗口放在一个样式中

任何人都可以提供我需要的缺失部分来实现这项工作吗?

AncestorType应该是MainWindow而不是MainViewModel。 MainViewModel不是可视树的一部分。