【问题标题】:Using the MVVM Light Toolkit to make Blendable applications使用 MVVM Light Toolkit 制作可混合应用程序
【发布时间】:2010-05-24 18:31:44
【问题描述】:

不久前,我posted a question 讨论了在 Blend 创作的 GUI 和 Visual Studio 创作的 GUI 之间切换。通过将我的 Blend 项目添加到我的 VS2008 项目中,然后更改启动应用程序并重新编译,我让它正常工作。这将导致两个应用程序具有完全不同的 GUI,但使用完全相同的 ViewModel 和 Model 代码。我对此非常满意。

既然我已经了解了 Laurent Bugnion 的 MVVM Light Toolkit,我真的很想利用他的努力来使支持同一后端代码的多个 GUI 的过程成为可能。问题是,工具包是否促进了这一点,还是我坚持以前的方式?

我从 MIX10 观看了他的视频,并在网上阅读了一些关于它的文章。但是,我还没有看到表明有一种干净的方法可以让用户通过加载不同的 DLL 来动态切换 GUI。 VS2008 和 Blend 3 有 MVVM 模板,但我是否应该为我的应用程序创建这两种类型的项目,然后从我的 VS2008 解决方案中引用特定文件?

更新 我重新阅读了 Laurent 网站上的一些信息,似乎忘记了模板的全部意义在于允许在 VS2008 Blend 中打开 same 解决方案。所以无论如何,有了这个新的视角,模板看起来实际上是打算使用一个单一的 GUI,很可能完全在 Blend 中设计(通过 VS2008 方便调试),然后能够使用两个不同的 ViewModel——一个用于设计时,一个用于运行时。

所以在我看来,我的问题的答案是我想结合使用我之前的解决方案以及 MVVM Light Toolkit。前者将允许我围绕我的核心代码制作多个不同的 GUI,而后者将使用设计时 ViewModel 使在 Blend 中设计精美的 GUI 变得更容易。有人可以对此发表评论吗?

【问题讨论】:

    标签: wpf mvvm expression-blend mvvm-light


    【解决方案1】:

    我检查了您的上一个问题和这个问题,但我从未真正听说过将项目切换到 Blend 和 Studio 中工作,并最终得到两个不同的 UI。我认为这不是 MSFT 在构建 Blend 时的意图。相反,在两个 IDE 中打开完全相同的项目和代码文件的可能性(以及我与 MSFT 的各个团队进行的所有讨论)暗示,事实上,意图是只有一个可以在两种环境中编辑的应用程序。

    我认为最终的目标是拥有各种可用于编辑 UI 的工具 - XAML、Visual Studio 设计器、Blend。根据您在项目中的角色(开发人员、设计师、集成商)以及您使用工具的能力,您可以选择其中一种。

    这并不意味着我们从不切换模板!根据应用程序的类型(例如在 SL4 桌面应用程序或 WinPhone7 应用程序之间),我们使用相同的 ViewModel(及以下)代码,但在文件上完全使用不同的 UI。我在这个视频中演示了如何做到这一点: http://channel9.msdn.com/posts/kreekman/TechDays-2010-Understanding-the-Model-View-ViewModel-pattern/

    这与我在 MIX 上的演讲相同,但延长了 15 分钟,我展示了如何重用 ViewModel 和模型文件,但为 WinPhone7 使用完全不同的 UI。

    另一个应用程序是在调整窗口大小时切换模板(在 WPF 中经常使用,但也适用于 Silverlight),以便为不同的屏幕尺寸显示更少的细节或不同的布局。

    我希望这个回复不会让您感到困惑 :) 事实上,在我们继续讨论之前,我很想听听你们的 cmets。

    干杯, 洛朗

    【讨论】:

    • 您好 Laurent,感谢您的回复!你的第一段证实了我所意识到的,所以这很好。这完全有道理,而且我认为能够在两个应用程序中打开解决方案并让它工作真是太好了。在您的工具包和模板之前,我最终会遇到设计时异常,或者没有代表性的 GUI 时期。我现在正在下载你的演讲——感谢你发布它。你所说的最接近我想要完成的目标,但我并不是针对不同的平台。等我看完视频再写。 :)
    • Laurent,那是比你的 MIX10 视频更全面的视频! :) Windows Phone 的最后一部分内容非常丰富。基本上,我认为这与我之前尝试支持相同代码的多个 GUI 时所做的相同。您创建了一个电话项目并添加了指向您的源的链接,而我创建了另一个 WPF 项目,但随后添加了对原始 WPF 应用程序使用的库的引用。我想我现在走在正确的轨道上。再次感谢您的意见!
    • 我正在尽我最大的努力说服 MSFT 给我们 75 分钟的 MIX 时间;)我喜欢 75 分钟的格式而不是 60 分钟的问答环节。干杯,劳伦特
    【解决方案2】:

    我认为MEFedMVVM 将是一个很好的候选人。它很简单,您可以将它与其他框架结合使用。

    【讨论】:

    • 谢谢,但我真的很想坚持使用 MVVM Light Toolkit,因为我已经在我的应用程序中使用了 MEF,而且我还计划使用 Laurent 工具包中的 RelayCommand 和 Messenger。
    猜你喜欢
    • 2011-06-19
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多