我非常感谢“List of WPF functionalities that aren’t in Silverlight 3中已经存在的问题(和答案)。”我所谓的新问题将WPF和Silverlight之间的差异缩小到MVVM的上下文中。基于我从MSDN下载的Shawn Wildermuth MVVM sample project,我做看到,从Silverlight 2开始,“还不支持Element Binding ......”但这肯定只是一个细节而且是这个还是这样吗?是否有WPF和Silverlight之间以MVVM为中心的差异的摘要?我们可以构建我们的应用程序,以便在两种技术之间更轻松地移动吗?
更新:Silverlight要求对外部资源的调用是异步的,而在WPF中,它可以是同步的或异步。 Silverlight中的这一要求归功于该技术的基于Web的特性。
答案 0 :(得分:2)
模式相同,但实现可能有所不同。 Silverlight缺少一些关键部分,例如命令,这意味着您可能需要花费更多精力来实现MVVM解决方案。但是,在一天结束时,你仍然会得到M,V和VM。
答案 1 :(得分:1)
现在,Silverlight 3中提供了元素绑定,以及一些用于实现操作的不同选项。如果您使用像Prism这样的框架(来自Microsoft模式和实践团队,默认情况下不包含在Silverlight中),则存在非常容易编码的行为以及命令。还有Visual State Manager,它现在只在Silverlight中,它处理你可能想要的许多常规动画类型,如果你正在做的是基于状态的。
构建应用程序以在两种技术之间移动是另一回事。 Silverlight上不支持许多XAML元素(以及WPF中不支持的某些SL),并且底层运行时特别保持较小以便于Web部署,因此存在并将继续存在许多缺失的事情。我不认为我们会在不久的将来看到完全跨平台的应用程序(代码一次,无需更改即可编译成WPF和Silverlight),我认为除了最简单的示例之外,代码修订将会非常重要
这并不意味着您无法将MVVM应用于两者,或者技能组不适用于两者。如果你熟悉一个,那么你肯定会有80%的方式立刻(尽管20%可能很难!)并理解模式(我使用数据绑定从视图中获取同步代码并进入查看模型,我使用命令/触发器/行为从视图后面的代码中删除事件处理程序中的操作等。)意味着你知道要做什么,即使如何你这样做会有所不同。从这个角度来看,我认为我们将在模式水平上实现平等。
至于Silverlight和WPF之间的MVVM模式实现差异的摘要,我还没有找到。对某人的博客文章而言,这听起来很不错......但