我有一个MVVM应用程序。在其中一个ViewModels中是“FindFilesCommand”,它填充了一个ObservableCollection。然后,我在同一ViewModel中实现一个“RemoveFilesCommand”。然后,此命令将打开一个窗口,以获取更多用户输入。
在保持MVVM范例的同时,什么地方/最好的方法是什么?不知何故
正在做:
新的WhateverWindow().Show()
在ViewModel中似乎是错误的。
干杯,
史蒂夫
最佳答案
我个人将这种情况视为主窗口 View 模型想要展示一项任务以供最终用户完成的情况。
它应该负责创建任务并对其进行初始化。该 View 应负责创建和显示子窗口,并将该任务用作新实例化的窗口的 View 模型。
可以取消或提交任务。完成时会发出通知。
窗口使用该通知自行关闭。如果有后续工作,则在任务提交后,父 View 模型将使用通知来执行其他工作。
我相信这与人们使用其代码隐藏方法所做的自然/直观操作非常相似,但可以重构为将独立于UI的关注点分解为 View 模型,而无需引入诸如服务等额外的概念性开销。
我有一个针对Silverlight的实现。有关更多详细信息,请参见http://www.nikhilk.net/ViewModel-Dialogs-Task-Pattern.aspx。
关于wpf - 在Model View ViewModel中调出新窗口的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654965/