【问题标题】:How to close a WPF child window using MVVM without any MVVM frameworks?如何在没有任何 MVVM 框架的情况下使用 MVVM 关闭 WPF 子窗口?
【发布时间】:2012-07-10 09:38:41
【问题描述】:

我对 MVVM 和 WPF 非常陌生。

我创建的应用程序有两个按钮,openWindow 和 closeWindow。 我设法使用 ICommand 连接 openWindow 并打开一个新窗口:) 我的问题是当我按下 closeWindow 时,如何关闭打开的窗口?

我没有使用任何 MVVM 框架,例如 MVVM Light 等。

非常感谢。

【问题讨论】:

  • 使用代码隐藏。 UI 工作由 UI 层完成,而不是 ViewModel。

标签: wpf mvvm


【解决方案1】:

为什么要从另一个窗口关闭一个窗口?对我来说没有意义,而且它不是那么用户友好。尽管如此,您始终可以在视图模型中公开一个视图可以订阅和响应的事件。您不会用此类事件破坏 mvvm 模式。

【讨论】:

  • 嘿盲人。看到我试图围绕 MVVM 的工作原理——> 来自 Windows 窗体背景,通常,我会传递该子窗口的一个实例,然后我可以通过引用该实例轻松关闭它。在这里使用 mvvm,我什至不知道是否可以传递窗口的实例。
  • 您只需要稍微扭转一下想法 - 而不是父母持有对孩子的引用,孩子应该知道父母并响应它的事件。将主窗口 VM 对象作为参数传递给子窗口,然后子窗口可以从父窗口订阅它需要的任何事件(包括关闭事件)。
  • 如果你想做 mvvm,你应该完全忘记视图/窗口;)考虑视图模型以及它们是如何相关的。视图和用户控件只是视觉表示。只需编辑您的问题,我就会写下您想要实现的目标。例如,我希望我的主视图可以打开一个对话框,用户可以在其中编辑数据,然后使用 ok/cancel 将这些数据返回到主视图中。这很容易通过 mvvm 实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 2011-04-06
  • 2015-04-09
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2012-02-10
相关资源
最近更新 更多