【问题标题】:Is MVVM dead in Windows 8 Store Apps?MVVM 在 Windows 8 应用商店应用程序中死了吗?
【发布时间】:2012-09-08 11:13:59
【问题描述】:

我已经开始了解 Windows 8 应用商店应用程序。

我记得之前从 Silverlight 和 WPF 编程中,人们适应了 MVVM 概念,现在我不确定是否应该使用我当时学到的东西。

我添加了对 GalaSoft.MvvmLight 的引用并创建了一个 ViewModel 并将其添加到我的 xaml 中,如下所示:

DataContext="{Binding Source={StaticResource Locator}, Path=Welcome}"

看起来微软在 LayoutAwarePage 中包含了某种 ModelView 实现:

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
    // TODO: Assign a bindable collection of items to this.DefaultViewModel["Items"]
    //  DefaultViewModel["WelcomeTiles"] = WelcomeTiles;
}

如果设置了以下数据上下文,则可以访问。

<DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}" />

所以现在我不确定是否应该使用 MVVMLight 来创建我记忆中的 ModelView,或者只是将代码隐藏文件中的数据添加到 DefaultViewModel。

人们对两者都有什么体验?我刚刚开始,我的下一个目标是为在 GridView 中单击项目时添加处理程序 - 上述哪些路径可以轻松地做到这一点?

【问题讨论】:

    标签: .net mvvm microsoft-metro mvvm-light


    【解决方案1】:

    MVVM 在 Windows 8 Metro 应用程序中并未消亡。

    我们没有在我们的应用程序中使用 MvvmLight,但是您需要的基本组件,例如绑定到 ViewModel 属性、在 ViewModel 中使用 ICommands 和 INotifyPropertyChanged 都可以通过非常小的更改(如果有的话)获得。

    微软最近发布了nice sample。它没有明确地说 MVVM,但它有你需要开始的东西。而且 Josh Smith 的 article 当然还是有用的。

    【讨论】:

      【解决方案2】:

      不,MVVM 永远不会消亡!

      Model-View-ViewModel 是一种设计模式,因此它不依赖于特定的框架或实现。但是,它是一种最方便与支持数据绑定的 UI 框架一起使用的 UI 设计模式。

      Windows 8 Metro 应用程序包括 XAML 和一个与 Silverlight 和 WPF 非常相似的绑定框架。因此,MVVM 是管理代码的绝佳选择。

      您在LayoutAwarePage 中发现的代码在this blog post 中进行了描述。它试图通过提供各种存根实现来简化 Windows 8 Metro 应用程序的开发。该页面包含一个DefaultViewModel,它是一个可观察的字典。

      就个人而言,我不会使用它!

      【讨论】:

      • 我一直在研究它。现在我在创建一个新页面时,也在创建一个 ViewModel 并针对它进行数据绑定。但是对于概念教授和快速演示,我发现单击 Visual Studio 模板并使用 defaultViewModel 非常容易。谢谢你们的cmets。
      【解决方案3】:

      我推荐http://stylemvvm.codeplex.com,它是从头开始编写的,以支持 Metro 项目(C#、C++/CX、HTML/JS)。它包括一个完整的 IOC、ICommand 和附加命令行为的实现、Tiles 服务、徽章、Toasts 和 Charms。它还包括一个很好的 Mediator 类,它可以感知调度程序。外加一些 Visual Studio 模板可帮助您入门。

      注意:因为我写了它,我可能有偏见:)

      【讨论】:

        【解决方案4】:

        不,MVVM 并没有死,而且还活着!!!

        MVVM 的 ColinE 定义很好地恢复了它。 事实上,MVVM 基本上是一种设计模式,并不依赖于特定的框架。

        使用 MVVM 不是教条..., 尽管大多数使用 XAML 应用程序编程 [WPF、Silverlight、WP 7 和 WinRT...] 的人都会同意 MVVM 真正促进了清晰的 SOC 关注点分离, 在 GUI 开发和后端逻辑之间。

        我个人将 Nuget 的 Laurent Bugnion 的 MVVMLight 包与 WinRT 结合使用,尽管您可以随意使用任何其他 MVVM 包或您觉得放心的选项。

        如果您需要更多示例参考,我会邀请您查看以下内容 Gill Cleeren 录制的“Windows 8 商店中的 MVVM”网络研讨会

        http://www.silverlightshow.net/video/MVVM-in-Win8-Webinar.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-03
          • 1970-01-01
          • 1970-01-01
          • 2013-03-30
          • 1970-01-01
          相关资源
          最近更新 更多