MVVM - 退出确认

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

谢谢。


1
dup?http://stackoverflow.com/questions/4851383/wpf-mvvm-cancel-window-closing - kenny
MVVM light toolkit 提供了一种良好有效的方式,在你的 MVVM 应用程序中实现消息传递。 - HichemSeeSharp
这是一个使用MVVM Light Toolkit的好例子:https://dev59.com/rXA65IYBdhLWcg3wsgyA - HichemSeeSharp
1个回答

0

你可以使用自己的ViewsService,它可以在ViewModel中使用并与View交互。

例如,你可以编写方法ViewsService.CloseActiveWindow()。在这种情况下,你不需要直接从ViewModel与View交互,而是通过服务类进行交互。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接