![]() |
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 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |
![]() |
Barta · WPF MVVM不更新视图 6 月前 |
![]() |
Denis Ivanov · WPF控件在属性更改时不会更新 6 月前 |
![]() |
codymanix · WPF:TextBlock周围可见小边框? 6 月前 |
![]() |
Nostromo · 来自背景对象的工具提示 10 月前 |
![]() |
Nuvolari · 从可观测集合添加/删除时出现对象处理异常 1 年前 |
![]() |
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 1 年前 |
![]() |
Thern · 在UI线程(WPF)上的void方法中调用异步函数 1 年前 |