MVVM Light和MVVM有什么区别?

5
我一直在使用MVVM来编写Windows 8应用和Windows手机应用。现在我即将接触MVVM Light,想知道它们之间有什么区别?我猜测MVVM Light是WPF和WinRT/WP8开发中的一个沙盒版本的MVVM。
是否有简单的答案?为什么要选择MVVM Light而不是MVVM?
5个回答

16

没有所谓的“MVVM全套”。

MVVM 是一种关于如何构建UI,数据和业务逻辑的模式。

MVVM light 是一个 轻量级 的框架,支持你实现这个模式。

顺便说一下:在你问题中使用的标签上悬停也可以回答这个问题;-)


1
好的,也许我没有问对问题。我想知道为什么有人会使用MVVM Light?我明白它可以帮助你入门,但是一旦你入门了,你还会继续使用它吗?还是转而使用微软提供的工具? - webdad3
2
当你说“MSFT提供了什么”时,实际上是什么意思? MVVM Light基本上包含一个实现了INotifyPropertyChanged的基类以及一些辅助方法。此外,它还包括一个发布/订阅实现。它并不是为了帮助你入门。它旨在通过包含您必须自己实现的部分来减少开发时间。 - Daniel Hilgarth
基本上,我不需要自己编写所有的代码,因为有一些辅助方法可以帮我完成其中的一部分。 - webdad3
6
MVVM Light 的目的确切地说是通过“打破单调乏味”的方式来简化开发过程,避免需要自己编写所有内容。没有多余,也没有少了 :) - LBugnion
有人能告诉我在哪里可以找到 MVVM Light 的文档吗?例如,我想知道 MVVM Light 支持哪些事件?我该如何找到这些信息? - Ehsan
这里有一些信息:http://www.mvvmlight.net/doc 或者在这里:http://pluralsight.com/training/Courses/TableOfContents/mvvm-light-toolkit-fundamentals。 - Daniel Hilgarth

3

MVVM Light旨在作为一个工具包(而不是框架)提供一组组件,帮助您按照MVVM模式编写应用程序。例如,MVVM Light有一些库类,封装了重复的代码,代码片段可以加快和便于输入,项目和项模板可以加快创建新应用程序并避免浪费时间进行基本的“连线”等。


1

MVVM代表Model-View-ViewModel。

MVVM Light是由“Laurent Bugnion” - GalaSoft创造的东西。

http://mvvmlight.codeplex.com/

MVVM 是一种企业应用程序开发模式和最佳实践。我们可以通过以下页面进行深入研究。

http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx

如果您想要完整的业务专注,独立于用户界面元素,如Silverlight TextBox,我们需要应用MVVM模式。通过这种方式,我们可以重用业务部分用于其他客户端平台,例如Windows Phone。
如果您了解MVC,您可以将Controller重新采样为ViewModel,但是此ViewModel不包含视图中的任何对象引用。而且您的VM可能会抽象化您的View。
我认为,针对.NET的MVVM模式应用者应该了解以下技术:Commanding、CollectionViewSource用于过滤排序操作、DataContext、Binding、INotifyPropertyChanged。

1
我一直在同时使用两种不同的设计模式 - MVVM 是一种设计模式,我仅将其用于设计我的代码,例如 MainWindow.xaml 位于 View 文件夹中,MainWindow_ViewModel.cs 位于 VM 文件夹中,然后 Model.cs 位于我的 Model 文件夹中。视图的 DataContext 设置为 ViewModel 类以进行连线。当然,MVVM 不仅仅是文件组织,还要确保代码按照该模式编写(实现逻辑分离等良好内容)。这样做 - 并不需要我引用 MVVM Light 库来完成上述操作。
我特别在需要多个 ViewModel 之间通信时使用 MVVM Light,使用 Messenger.Default.Send(广播值)和 Messenger.Default.Register(在不同的 VM 中获取值)。
如果需要,我可以分享示例代码。希望这能有所帮助。

1
MVVM Light是由Galasoft开发的用于MVVM模式的工具包。因此,MVVM是一种设计模式,而MVVM Light可以帮助您将其付诸实践。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接