让我们说一个ViewModel
发布一个Event
and a View
它正在使用该虚拟机作为其DataContext
订阅该Event
通过强制转换来获取对 VM 的引用DataContext
到虚拟机实例:
vm = DataContext as MainViewModel;
if (vm == null) return;
vm.SomeUIRelatedNotice += DoSomethingUIRelated;
在我看来,VM ramins 是解耦的,它的可测试性不会受到任何影响,并且视图已经有对 VM 的引用,所以我认为这根本没有问题,但我想听听 MVVM 纯粹主义者是否认为这是一个糟糕的设计,会对 MVVM 模式产生负面影响,如果是的话,为什么?
只要视图模型本身不执行任何视图逻辑,我就不认为这会破坏 MVVM 模式。
在你的例子中,视图模型试图以某种方式交互和引导视图,所以你可能应该知道还有其他方法可以实现这种行为,这些方法被认为是更纯粹的 MVVM:
- MVVM Light 工具包Messenger service http://msdn.microsoft.com/en-us/magazine/jj694937.aspx
- Prism's EventAggregator http://msdn.microsoft.com/en-us/library/ff921122.aspx or its 交互模式 http://msdn.microsoft.com/en-us/library/gg405494%28v=pandp.40%29.aspx#sec10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)