【问题标题】:Are MVVM Patterns in WPF and Silverlight identical?WPF 和 Silverlight 中的 MVVM 模式是否相同?
【发布时间】:2010-12-12 21:52:57
【问题描述】:

我非常感谢“List of WPF functionalities that aren’t in Silverlight 3”中已有的问题(和答案)。我所谓的新问题将 WPF 和 Silverlight 之间的差异缩小到 MVVM 的上下文中。根据我从 MSDN 下载的Shawn Wildermuth MVVM sample project,我确实看到,从 Silverlight 2 开始,“还不支持元素绑定……”但这肯定只是一个细节,这仍然是案子? WPF 和 Silverlight 之间是否有以 MVVM 为中心的差异的总结?我们能否构建应用程序以更轻松地在两种技术之间移动?

更新: Silverlight 要求对外部资源的调用是异步的,而在 WPF 中它可以是同步的异步的。 Silverlight 中的这一要求是由于该技术基于 Web 的性质。

【问题讨论】:

    标签: wpf silverlight mvvm


    【解决方案1】:

    模式相同,但实现可能不同。 Silverlight 缺少一些关键部分,例如命令,这意味着您可能需要付出更多努力才能实现 MVVM 解决方案。但是,归根结底,您仍然会得到 M、V 和 VM。

    【讨论】:

      【解决方案2】:

      现在 Silverlight 3 中提供了元素绑定,以及用于实现操作的几个不同选项。如果您使用 Prism 之类的框架(来自 Microsoft 模式和实践团队,默认情况下不包含在 Silverlight 中),则有些行为非常容易编码,还有命令。还有一个 Visual State Manager,它现在只在 Silverlight 中,如果你正在做的事情是基于状态的,它可以处理你可能想要的许多常规类型的动画。

      但是,构建在两种技术之间移动的应用程序是另一回事。 Silverlight 不支持许多 XAML 元素(以及 WPF 中不支持的一些 SL 内容),并且底层运行时特别保持较小以促进 Web 部署,因此缺少并将继续缺少一些东西。我认为我们不会在不久的将来看到完全跨平台的应用程序(一次代码,无需更改即可编译到 WPF 和 Silverlight 中),我认为除了最微不足道的示例之外,代码修订将是重要的.

      这并不意味着您不能将 MVVM 应用于两者,或者技能集不能同时应用于两者。如果您熟悉其中一个,那么您肯定会立即完成另一个的 80%(尽管 20% 可能很难!)并理解模式(我使用数据绑定将同步代码从视图中移出并放入视图模型,我使用命令/触发器/行为从视图后面代码中的事件处理程序中删除操作等)意味着您知道做什么,即使如何 b> 你这样做会有点不同。从这个角度来看,我认为我们已经接近实现模式级别的均等性。

      关于Silverlight和WPF的MVVM模式实现差异的总结,我还没有找到。不过,对于某人的博客文章来说,这听起来像是一个不错的主题...

      【讨论】:

      • 嘿,我很感谢我投票给它的回应,但是,如你所知,问题仍然存在......也许是一篇新的 MSDN 文章?
      • @rasx 不要以为我是他们想要写一篇文章的人。但我很想自己读。
      • @Raumornie Shawn Wildermuth 之前在 MSDN 杂志上做得很好(对于 Silverlight 2 中的 MVVM),所以他应该再试一次!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 2016-07-12
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多