我正在尝试学习MVVM,但还有一些我还不了解的东西。
目前,我有这个事件处理程序:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (MessageBox.Show("Are you sure you want to close this application?", "Close??", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
{
e.Cancel = true;
}
}
很简单。但是,我想在此应用程序中应用MVVM模式。
我想知道,我是否应该将此逻辑放在ViewModel中而不是直接放在视图代码中?如果是这样,我该怎么做呢?
由于
答案 0 :(得分:0)
您可以使用自己的ViewsService,它可以在ViewModel中使用并与View交互。 例如,您可以编写方法ViewsService.CloseActiveWindow()。在这种情况下,您无需直接从ViewModel与View进行交互,而是通过服务类进行交互。
另一种方式:使用全局发布/订阅服务。 ViewModel将发送事件,View将订阅此事件。如果是多个窗口,您可以检查窗口是否处于活动状态并仅关闭活动窗口。