5

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

谢谢

4

1 回答 1

0

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

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

于 2012-06-19T14:02:36.590 回答