首先,我是WPF和MVVM的初学者,我的小应用程序确实不一定需要所有功能才能工作,但我希望得到一个大应用程序的“想象力”以及它是如何真正的假设要完成。到目前为止,在打开新窗口时,我目前已经创建了一个名为WindowHandler的类,它将viewmodel作为参数并创建一个视图,如下所示:
public MainViewModel()
{
new WindowHandler(new SettingsViewModel());
}
创建视图:
public WindowHandler(ViewModelBase viewmodel)
{
_viewModel = viewmodel;
_view = new Window
{
Content = _viewModel
};
}
然后我可以将类似Show()的方法添加到我的WindowHandler中来打开窗口。
public void Show()
{
_view.Show();
}
我的所有观点,除了MainWindow,都是用户控件,只是windows的内容。现在我遇到了窗口事件的问题。我可以将每个窗口事件的虚方法添加到ViewModelBase中,并将它们视为通常的视图事件:
public WindowHandler(ViewModelBase viewmodel)
{
_viewModel = viewmodel;
_view = new Window
{
Content = _viewModel
};
_view.Closing += View_Closing;
_view.Closed += View_Closed;
}
..然后根据需要在viewmodel中覆盖它们。但我开始相信我走错了路。任何人都可以说为什么这是错误的/坏的,我真的需要走哪条路?