Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVVM光幕激活-推荐的模式是什么?_Mvvm_Mvvm Light - Fatal编程技术网

MVVM光幕激活-推荐的模式是什么?

MVVM光幕激活-推荐的模式是什么?,mvvm,mvvm-light,Mvvm,Mvvm Light,我所说的“屏幕激活”是指,当你想在没有被占用的区域显示一些东西,或者切换一个视图与另一个视图时。在Caliburn Micro中,所有这些都是通过实例化和激活另一个ViewModel从ViewModel的方法完成的。在我看来,从MVVM的角度来看,考虑到它的“视图优先”方法,要实现同样的效果,您需要使用一个代码,只需将视图主机的内容切换到其他视图即可 我想知道这是否可以在没有代码隐藏的情况下完成,这项任务是否有一种主导模式。在本文中,我概述了从MVVM灯光视图模型显示对话框通常采用的方法 MVV

我所说的“屏幕激活”是指,当你想在没有被占用的区域显示一些东西,或者切换一个视图与另一个视图时。在Caliburn Micro中,所有这些都是通过实例化和激活另一个ViewModel从ViewModel的方法完成的。在我看来,从MVVM的角度来看,考虑到它的“视图优先”方法,要实现同样的效果,您需要使用一个代码,只需将视图主机的内容切换到其他视图即可

我想知道这是否可以在没有代码隐藏的情况下完成,这项任务是否有一种主导模式。

在本文中,我概述了从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来说,实际上没有“主导”模式,但是,一些竞争者(如图所示)。

在本文中,我概述了从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的文章中的方法可能是最合适的。顺便说一句,我想到了另一个——你可以在设计时将你的屏幕(或多个屏幕)包含在主机中,只需隐藏