【问题标题】:What is the difference between MVVM Light and MVVM?MVVM Light 和 MVVM 有什么区别?
【发布时间】:2013-03-20 15:41:29
【问题描述】:

我一直在使用 MVVM 对我的 Windows 8 应用程序和 Windows phone 应用程序进行编程。我即将接触 MVVM Light,我只是想知道它们之间的区别是什么?我想 MVVM light 是 MVVM 的沙盒版本,带有 WPF 和 WinRT/WP8 开发。

有简单的答案吗?为什么会选择 MVVM Light 而不是 MVVM?

【问题讨论】:

    标签: wpf silverlight mvvm mvvm-light


    【解决方案1】:

    没有“MVVM 已满”之类的东西。

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

    MVVM light 是一个轻量级框架,支持您实现该模式。

    顺便说一句:将鼠标悬停在您在问题中使用的标签上也会回答这个问题;-)

    【讨论】:

    • 好吧,也许我问的问题不对。我想我仍然想知道为什么有人会使用 MVVM Light?我知道它应该是“帮助”让你开始。但是一旦你开始使用它,你会继续使用它吗?或者只是切换到 MSFT 提供的内容。
    • 当您说“MSFT 提供什么”时,您的实际意思是什么? MVVM light 基本上包含一个实现 INotifyPropertyChanged 的​​基类以及一些辅助方法。此外,它还包括一个pub/sub 实现。它不应该帮助您入门。它应该通过包含无论如何都必须实现的部分来减少开发时间。
    • 所以基本上不是我自己写所有东西,而是有一些辅助方法可以为我做一些事情。
    • 确切地说,这就是 MVVM Light 的意图,通过“打破单调”来促进开发,必须自己编写所有内容。不多不少:)
    • 谁能告诉我在哪里可以找到 MVVM Light 的文档?例如,我想知道 MVVM Light 支持哪些事件?我怎么知道呢?
    【解决方案2】:

    MVVM Light 旨在作为一个工具包(而不是框架;),它提供了一套组件,可帮助您根据 MVVM 模式编写应用程序。例如,MVVM Light 有一些库类封装了重复的代码,sn-ps 来加速和促进打字,项目和项目模板来加速新应用程序的创建并避免在基本的“接线”上浪费时间应用程序等。

    【讨论】:

      【解决方案3】:

      MVVM 代表 ModelViewViewModel。

      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 不包含您视图中对象的任何引用。你的虚拟机可能会抽象你的视图。

      我认为 .NET 的 MVVM 模式应用程序应该了解这些技术; 指挥, CollectionViewSource 用于过滤排序操作, 数据上下文, 捆绑, INotifyPropertyChanged

      【讨论】:

        【解决方案4】:

        我一直在使用两者的一种方式(明显地) - MVVM 是一种设计模式,我只是根据模式来构建我的代码 - 所以本质上 MainWindow.xaml 位于视图文件夹中,MainWindow_ViewModel.cs 位于 VM 中文件夹,然后是 Model.cs,它位于我的 Model 文件夹中。 View 的 DataContext 是用 ViewModel 类设置的,用于接线。当然,MVVM 不仅仅是文件组织,而是确保代码也按照模式编写(逻辑分离和所有应该按照模式实现的好东西)。这样做 - 不一定需要我参考 MVVM Light 库来执行上述操作。

        当我想使用 Messenger.Default.Send(广播值)Messenger.Default.Register(在不同的 VM 中获取值)在多个 ViewModel 之间进行通信时,我专门使用 MVVM Light

        如有需要,可以分享示例代码。希望有帮助。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2011-02-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-31
            • 2013-01-02
            • 2014-08-29
            相关资源
            最近更新 更多