通过“屏幕激活”我的意思是concept from Caliburn Micro,当你想要在未被占用的区域中显示某个东西或者用另一个视图切换一个视图时。在Caliburn Micro中,所有这些都是通过实例化和激活另一个ViewModel从ViewModel的方法完成的。在我看来,在MVVM Light中,考虑到它的“View First”方法,为了达到同样的目的,你需要使用后面的代码,只需用其他视图切换视图主机的内容。
我想知道这是否可以在没有代码隐藏的情况下完成,并且如果这项任务存在主导模式。
答案 0 :(得分:1)
在this post中,我概述了通常用于从MVVM Light视图模型显示对话框的方法。
MVVM Light没有区域的概念,也没有强迫您使用一个特定的范例来解决问题。这给你留下了很多自由,相反,这也意味着你必须自己做更多的事情。
如果您需要区域和插件,可能使用更大的框架 - 如Prism,Caliburn或Ocean(部分) - 可能是更好的选择。如果你被MVVM Light绑定并需要这个功能,你必须自己创建它 - 因此名称中的“轻”部分: - )
修改强>
你(谢尔盖)的评论让我思考,于是我出去四处寻找并找到适合你需要的东西。
Mike Hamilton实现了基于MVVM Light的导体/屏幕逻辑。样本不使用ViewModelLocator
,但我看不出为什么这不能改变(虽然时间允许但没有尝试过)。但是,这种方法看起来很有希望注意:可能仅适用于WPF - 示例仅为WPF,并且没有导航。
源代码中的Bedides软件包也可以NuGet package。
的形式提供即使你想推出自己的实现,样本,源代码和博客文章也为你提供了一个很好的起点。
如果您定位WP7,则Laurent Buginion和Jesse Liberty都会展示如何实施NavigationService
- 这也属于此类别。
由于Silverlight和WP7具有相当多的共性,NavigationService
方法也可以转换为与Silverlight一起使用 - 实际上我是在我写的SL应用程序中完成的。
Jay Kimble提供了一个模板,为Silverlight实现了另一种方法。
至于我对Siverlight / WP 7所说的“主导”模式是什么,它是NavigationService
模式,对于WPF来说 - 实际上并不是“主导”模式,但是,有些竞争者(一个显示) )。