WPF(MVVM):如何从ViewModel中关闭View?

47

有没有人在使用MVVM时遇到过一种巧妙的方法来关闭视图(view)的情况?

也许可以使用绑定(binding)的方式来向视图(window)发送关闭信号?

我非常感谢大家的任何建议。

基本上,我有一个登录视图(loginView),它绑定到一个登录视图模型(loginViewModel),在视图模型中(使用命令绑定)测试登录是否成功,如果成功,我就加载一个新的视图(mainView)并附加其数据上下文...

但是,登录视图仍然显示出来 - 所以需要发信号通知其卸载(unload)。。

我还希望有一种通用的解决方案,因为我相信我将来会在其他情况下需要这样做

有什么想法吗?

11个回答

0

为了关闭视图,我使用了Galasoft MVVM Light Toolkit,您可以在此处下载:http://www.mvvmlight.net/

  1. 创建一个类像这样: public class ClosingRequested : MessageBase { }

  2. 将以下内容添加到您的视图构造函数中: Messenger.Default.Register(this, vm, msg=> Close());

  3. 调用以下方法关闭您的窗口: Messenger.Default.Send(new ClosingRequested(), this);


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