【发布时间】:2016-11-01 04:08:47
【问题描述】:
我使用 WPF 应用程序并为此使用 MVVM 模式。我有两个单独的视图和视图模型项目。
在视图中添加了Unity 的引用,我正在使用Unity 将我的MainWindowViewModel 实例注入到应用程序的StartUp 上的MainWindow 视图中,并且能够将视图模型绑定到视图。
现在,我想在单击 MainWindow 视图上的按钮时打开 MainWindow 的新实例。
问题是如何从 Viewmodel 创建视图实例。
已经尝试过以下方法:
编辑:
- 我想在没有任何插件或插件的情况下实现这一点,因为我不熟悉其中的任何一个,而且大多数答案都涉及一些插件。另外,我觉得如果我自己让它工作,让我完全控制它,这对我来说真的很方便。
- 我尝试了this,但无法正常工作。此外,还不清楚我必须把什么放在哪里(在视图中或 vm 中)
- 我不想开多个
MainWindow,这只是另一个工作的研发。在实际场景中,我们需要显示与系统连接的某些设备的状态,并且每个连接的设备都会有单独的Window。即使我们可以从Mainwindow打开多个子窗口,我也可以。 - 我只想用不同的数据上下文实例打开多个窗口实例,它可以来自视图或虚拟机,但它应该保持 MVVM。
【问题讨论】:
-
让我知道任何其他详细信息。 .
-
您不能在视图模型中创建窗口。那不是 MVVM。第二个问题的公认答案很糟糕。这个答案stackoverflow.com/a/2349193/1228 更好。一些以 UI 为中心的中介应该为 vm 工作 UI。这样你就可以在测试中把它存根。您可以在 edit 中提供的另外两个信息是 1)为什么这两个问题没有提供答案,以及 2)为什么需要从视图模型打开一个新的主窗口(两个 i> 主窗口?奇怪!)
标签: c# wpf mvvm dependency-injection unity-container