不久前,我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中打开相同的解决方案。无论如何,使用这个新视角看起来模板实际上是打算使用单个GUI,很可能完全是在Blend中设计的(通过VS2008调试的便利性),然后能够使用两个不同的ViewModel - 一个用于设计时,一个用于运行时。
所以在我看来,我的问题的答案是我想要使用我之前的解决方案和MVVM Light Toolkit的组合。前者将允许我围绕我的核心代码创建多个不同的GUI,而后者将使用设计时ViewModel更轻松地在Blend中设计精美的GUI。有人可以对此发表评论吗?
答案 0 :(得分:2)
我检查了你之前的问题和这个问题,我从未真正听说过将项目转换为在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)切换模板,以便为不同的屏幕尺寸显示更少的细节或不同的布局。
我希望这个回复不会让你感到困惑:)事实上,在我们继续讨论之前,我很想听听你的意见。
干杯, 劳伦
答案 1 :(得分:0)
我认为MEFedMVVM将是一个很好的候选人。它很简单,你可以将它与其他框架结合起来。