|
|
1
14
做 比如: 具体来说,卡梅隆·麦克法兰的回答正是我所做的。通过提供的服务 接口 提供IO和/或用户交互 :
希望这有帮助。 |
|
|
2
2
我用 this
|
|
|
3
0
我的解决方案: 如果我的代码需要某个视图是模态的,它会在这个属性中放置对它的引用。MainWindowView通过INotifyPropertyChanged机制监视此属性。如果Modal设置为某个VM,MainWindowView类将获取该VM并将其放入ModalView窗口中,在该窗口中,适当的用户控件将通过DataTemplates的魔力显示,该窗口将使用ShowDialog显示。ModalViewModelBase有一个DialogResult属性和一个名为IsFinished的属性。当模态VM将IsFinished设置为true时,视图关闭。
模态视图的原理是在显示模态视图的同时禁用其他视图。这是视图逻辑的一部分,基本上是无外观的。这就是为什么我在MainWindowViewModel中有一个属性。如果我更进一步,我应该让主VM中所有其他VM的所有其他属性或命令在模态模式下抛出异常,但我觉得这太过分了。 实际上拒绝用户任何其他操作的视图机制不必通过弹出窗口和showdialog来执行,它可以是您将模式视图放在现有窗口中,但禁用所有其他窗口或其他一些操作。这个与视图相关的逻辑属于视图本身。(一个典型的设计师不能为这种逻辑编写代码,这似乎是次要的问题。有时我们都需要帮助。) 所以我就是这样做的。我提供它只是作为一个建议,可能有其他的思考方式,我希望你得到更多的答复了。 |
|
|
4
0
我用过 EventAggregator 类似场景下的Prism v2。prims的好处是,您不必在MVVM应用程序中使用整个框架。您可以提取EventAggregator功能,并将其与当前设置一起使用。 |
|
|
5
-1
您可以看看这篇MVVM文章。它描述了控制器如何与ViewModel通信: http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&ProjectName=waf |