在MVVM模式中,ViewModel不应该对View(及其依赖项)有任何了解。
Xamarin.Forms的Prism(MVVM库)依赖于Xamarin.Forms,因此它突破了上述规则,尽管棱镜团队声称要实现Microsoft模式&实践。另一个库没有这种依赖(例如mvvmcross,freshmvvm)
如何理解?
修改
答案 0 :(得分:1)
有趣的一点,但不是很准确。
MVVM就像你说的那样是将ViewModel与View分开。 那么破坏模式的是,如果我们在ViewModel中有一个View实例,你就可以直接从viewmodel控制它,这将破坏MVVM模式。
在viewmodel中拥有视图所依赖的库不会破坏mvvm模式。考虑在两侧都有一个Json库的情况。但是,它会限制我们的解决方案的跨平台。因此,在您的情况下,您将无法与Xamarin(例如WPF)之外的其他平台共享您的视图模型。
如果你真的想要使用Prism并且同时拥有相同的ViewModel用于WPF,那么在理论中这将起作用:
备注强>
BindingContext = _viewmodel;
并不是什么大问题。 答案 1 :(得分:0)
广告1:鉴于视图有些类似,迁移视图模型应该很容易,也许是复制粘贴加上整理的问题
广告2:如果发生这种情况我会感到非常惊讶,反过来更有可能,请参阅this comment on github