【发布时间】:2015-04-09 11:19:08
【问题描述】:
我需要根据在窗口中显示的控件中触发的单击命令从 ViewModel 关闭模式窗口。
所以,我有 MainViewModel、JimViewModel、JimWindow 和 JimControl。 MainViewModel 创建一个 JimWindow 并将其 DataContext 设置为 JimViewModel。 JimWindow 包含 JimControl,其中包含一个按钮。单击此按钮时,我想触发一个以某种方式关闭 JimWindow 的命令。
我已经看到了一些关于从实际窗口关闭窗口的问题(通过将窗口实例传递给 ViewModel 上的命令),但它并没有转化为我想要的做。
我没有使用框架,所以我没有方便的信使来帮助我。任何人都可以帮忙吗?是否以某种方式从控件中引用父窗口的名称?
【问题讨论】:
-
由于窗口关闭与视图严格相关,我想说覆盖事件以调用命令(如果需要)并关闭窗口比在命令中提供该功能的视图模型更好。
-
这个关闭的调用会在哪里呢?关闭窗口的按钮位于窗口内部的控件中。窗口是否应该将对自身的引用传递给控件?
-
该函数将在窗口上下文中被覆盖。也就是说,覆盖类将是窗口,因此可以调用
Close()。这会将代码添加到代码应该稀缺的地方,但我认为它不属于 VM 中的代码。我没有足够的经验来了解所有其他可用选项。