MVVM - 退出确认

时间:2012-06-19 13:51:27

标签: c# wpf mvvm

我正在尝试学习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中而不是直接放在视图代码中?如果是这样,我该怎么做呢?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用自己的ViewsService,它可以在ViewModel中使用并与View交互。 例如,您可以编写方法ViewsService.CloseActiveWindow()。在这种情况下,您无需直接从ViewModel与View进行交互,而是通过服务类进行交互。

另一种方式:使用全局发布/订阅服务。 ViewModel将发送事件,View将订阅此事件。如果是多个窗口,您可以检查窗口是否处于活动状态并仅关闭活动窗口。