wpf - 在Model View ViewModel中调出新窗口的最佳位置

标签 wpf design-patterns mvvm

我有一个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/

相关文章:

c# - 从 AvalonDock 2.0 中的集合绑定(bind) LayoutDocument 的标题

c# - 使用 WPF/C# 中的绑定(bind)获取更改的数据

c# - Java+Swing 比 C#+WinForms/WPF 有什么优势?

c# - 绑定(bind)到 CheckBox 并以 MVVM 方式执行命令

php - 如果数据库丢失,设计模式可以优雅地失败

c++ - 针对具有 gtest 程序的以下情况进行设计

c# - 如何防止自定义控件的元素获得焦点?

java - 如何为抽象方法编写契约?

xamarin - 如何将 StaticResource 的名称绑定(bind)到 ViewModel 属性?

c# - 仅在属性存在时绑定(bind)到属性