使用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不是可视树的一部分。