MVVM光幕激活-推荐的模式是什么?
我所说的“屏幕激活”是指,当你想在没有被占用的区域显示一些东西,或者切换一个视图与另一个视图时。在Caliburn Micro中,所有这些都是通过实例化和激活另一个ViewModel从ViewModel的方法完成的。在我看来,从MVVM的角度来看,考虑到它的“视图优先”方法,要实现同样的效果,您需要使用一个代码,只需将视图主机的内容切换到其他视图即可 我想知道这是否可以在没有代码隐藏的情况下完成,这项任务是否有一种主导模式。在本文中,我概述了从MVVM灯光视图模型显示对话框通常采用的方法 MVVM Light没有区域的概念,也没有强迫您使用特定的范例来解决问题。这给你留下了很多自由,然而,相反,这也意味着你必须自己做更多的事情 如果您需要区域和插件,那么使用更大的框架(如Prism、Caliburn或Ocean(部分))可能是更好的选择。如果您绑定到MVVM Light并需要此功能,则必须自己创建它-因此名称中的“Light”部分:-) 编辑 你(谢尔盖的)评论引起了我的思考,所以我出去四处看看,找到了一些可能适合你需要的东西 实现了基于MVVM Light的导体/屏幕逻辑。这些示例没有使用MVVM光幕激活-推荐的模式是什么?,mvvm,mvvm-light,Mvvm,Mvvm Light,我所说的“屏幕激活”是指,当你想在没有被占用的区域显示一些东西,或者切换一个视图与另一个视图时。在Caliburn Micro中,所有这些都是通过实例化和激活另一个ViewModel从ViewModel的方法完成的。在我看来,从MVVM的角度来看,考虑到它的“视图优先”方法,要实现同样的效果,您需要使用一个代码,只需将视图主机的内容切换到其他视图即可 我想知道这是否可以在没有代码隐藏的情况下完成,这项任务是否有一种主导模式。在本文中,我概述了从MVVM灯光视图模型显示对话框通常采用的方法 MVV
ViewModelLocator
,但我看不出为什么不能更改它(尽管没有尝试过-时间允许)。然而,这种方法看起来很有希望注意:它可能只适用于WPF-样本仅适用于WPF,其中没有导航
源代码中的Bedides包也可以作为一个
即使您想推出自己的实现,示例、源代码和博客文章也为您提供了一个良好的起点
如果您同时以WP7为目标,并演示了如何实现导航服务
——这也属于这一类别
由于Silverlight和WP7有很多共同点,NavigationService
方法也可以转换为与Silverlight一起使用-实际上,我在自己编写的SL应用程序中完成了这项工作
提供了实现Silverlight的另一种方法的模板
至于Siverlight/WP 7的“主导”模式是什么,我想说的是NavigationService
模式,对于WPF来说,实际上没有“主导”模式,但是,一些竞争者(如图所示)。在本文中,我概述了从MVVM灯光视图模型显示对话框通常采用的方法
MVVM Light没有区域的概念,也没有强迫您使用特定的范例来解决问题。这给你留下了很多自由,然而,相反,这也意味着你必须自己做更多的事情
如果您需要区域和插件,那么使用更大的框架(如Prism、Caliburn或Ocean(部分))可能是更好的选择。如果您绑定到MVVM Light并需要此功能,则必须自己创建它-因此名称中的“Light”部分:-)
编辑
你(谢尔盖的)评论引起了我的思考,所以我出去四处看看,找到了一些可能适合你需要的东西
实现了基于MVVM Light的导体/屏幕逻辑。这些示例没有使用ViewModelLocator
,但我看不出为什么不能更改它(尽管没有尝试过-时间允许)。然而,这种方法看起来很有希望注意:它可能只适用于WPF-样本仅适用于WPF,其中没有导航
源代码中的Bedides包也可以作为一个
即使您想推出自己的实现,示例、源代码和博客文章也为您提供了一个良好的起点
如果您同时以WP7为目标,并演示了如何实现导航服务
——这也属于这一类别
由于Silverlight和WP7有很多共同点,NavigationService
方法也可以转换为与Silverlight一起使用-实际上,我在自己编写的SL应用程序中完成了这项工作
提供了实现Silverlight的另一种方法的模板
至于Siverlight/WP 7的“主导”模式是什么,我想说的是
NavigationService
模式,对于WPF-实际上没有“主导”模式,但是,一些竞争者(如图所示)。好吧,Caliburn Micro是我选择的框架-但我也喜欢试验ViewFirst模式,其中MVVMLight是冠军。我想如果我必须自己实现它,我只需要注册我的视图和主机,并从ViewModel中使用类似viewService的东西。激活(myView,myHost)@SergeyAldoukhov:请参见编辑,如果时间允许,我将在博客文章中提供我的示例。谢谢,Mike Hamilton的文章中的方法可能是最合适的。顺便说一句,我想到了另一个方法-您可以在设计时将屏幕(或多个屏幕)包含在主机中,仅隐藏,并通过StateManager操纵屏幕可见性,StateManager可以通过一些服务进行控制。在本例中,您的viewmodels将被急切地实例化,但它们可以检测视图的可见性,并且只有在显示时才能执行实际工作。Caliburn Micro是我选择的框架-但我也喜欢使用ViewFirst模型进行实验,MVVMLight是其中的佼佼者。我想如果我必须自己实现它,我只需要注册我的视图和主机,并从ViewModel中使用类似viewService的东西。激活(myView,myHost)@SergeyAldoukhov:请参见编辑,如果时间允许,我将在博客文章中提供我的示例。谢谢,Mike Hamilton的文章中的方法可能是最合适的。顺便说一句,我想到了另一个——你可以在设计时将你的屏幕(或多个屏幕)包含在主机中,只需隐藏