在MVVM模式中,ViewModel不应该对View (及其依赖项)有任何了解。
针对Xamarin.Forms的棱镜(MVVM库)依赖于Xamarin.Forms,因此它打破了上述规则,尽管棱镜团队声称实现了微软的模式和实践。另一个库没有这样的依赖项(例如mvvmcross、freshmvvm)
如何理解它?
编辑:
发布于 2016-12-12 15:48:59
有趣的一点,但并不是很准确。
正如您所说的,MVVM将ViewModel从视图中分离出来。因此,如果我们在ViewModel中有一个视图实例,然后开始从视图模型直接控制它,就会打破MVVM模式,就会打破这个模式。
在视图模型中拥有视图依赖的库不会破坏mvvm模式。考虑在双方都有一个Json库的情况。然而,这将限制我们的解决方案的跨平台性。因此,在您的情况下,您将无法与Xamarin以外的其他平台共享您的视图模型(例如,WPF)。
如果您真的想使用棱镜,同时对WPF具有相同的ViewModels,那么从理论上讲,这是可行的:
Notes
BindingContext = _viewmodel;并不是一件很大的事情。发布于 2016-12-12 19:21:40
广告1:考虑到视图有点相似,迁移视图模型应该很容易,也许是复制和粘贴+整理的问题。
广告2:如果发生这种情况,我会很惊讶,相反,更有可能发生,见关于github的评论
https://stackoverflow.com/questions/41104088
复制相似问题