将WPF应用程序转换为SilverLight

19

能否自动或者最小化努力地将现有的WPF应用程序转换为SilverLight?

5个回答

10
我认为你可以用很少的努力将Silverlight移植到WPF。我花了2个小时移植了一个我写了3周的应用程序。我认为这2个小时的努力可以归类为最小的努力。
当然,你需要创建一个新项目,将文件添加到新项目中并进行调整。
由于Silverlight是WPF的子集,从Silverlight到WPF比反过来容易得多。
对于业务逻辑和非UI代码,你的代码几乎可以直接移植。我在身份验证方面遇到了一些小问题,因为Silverlight 2会在浏览器中获取任何身份验证信息,而在WPF中你必须自己编写登录屏幕并管理cookie等。
如果您不对控件进行样式设置,则XAML可以直接移植。如果您对控件进行样式设置,那么使用Visual State Manager(WPF目前缺少的功能)将使事情变得有些棘手。您可以使用触发器在WPF中重新设置控件样式,或者您可以使用John Gossman为WPF实现的VSM。Microsoft已宣布将添加VSM到WPF中,以使这两个框架更加兼容。
也许最重要的复用是技能和经验。由于这两个平台非常相似,因此您将能够在WPF中重用所有技能。
最近发布了一篇关于Dive Log示例应用程序的博客文章,介绍了我如何将其从Silverlight 2移植到WPF。这可能会给你一些想法。

我认为有点混淆了。这个问题是关于将 WPF 转换成 Silverlight 的,而你的回答涉及了另一个方向。 - Peter

9
并不完全如此。我已经找到了一些关于多目标选项的文章,同时适用于WPF和Silverlight。目前,如果你没有使用PRISM,那么同时针对这两个平台是相当具有挑战性的,但仍然可以实现。
需要注意的是,Silverlight使用的库比WPF小(因此更加有限)。
作为对评论的回应: 实际上,PRISM(v2)已经支持Silverlight。PRISM的理念是为开发应用程序提供指导,不仅使用WPF,还可以使用Silverlight——Prism V2正式被称为WPF和Silverlight复合应用程序指南。 通过使用PRISM进行Silverlight功能,可以保证您的代码在两个平台上都能够正常工作,如果none (除了可能要使用Visual Studio的不同项目类型),则需要最小的更改。
当然,如果您已经开始开发应用程序,您需要更改您的代码以使用PRISM。

谢谢指出PRISM。我会仔细研究它。 - Salamander2007
1
Prism是使用WPF开发复合应用程序的指南。他们计划在某个时候为Silverlight提供指导/库...然而,关键是...PRISM并不一定能帮助您编写易于转换为Silverlight应用程序的WPF应用程序。 - cplotts
我不明白为什么Prism与将Silverlight移植到WPF有任何关系。Prism只是一个库和一些辅助类 - 没有它,您也可以轻松地将纯Silverlight代码和XAML移植到WPF。 - Jonas Follesø

7

Will和Bogdan的答案是正确的。关键词在于“minimal”(最小化)。 Rob Eisenberg列出了一些差异这里(尽管这是在RTW之前)。

WPF和Silverlight的差异列表


优秀的谷歌优化链接。;) 但是这些链接都是NOFOLLOW的。顺便说一下,也许在达到一定的声望级别之后,它们就不应该是NOFOLLOW了。或者更好的是,在回答达到一定分数(比如8或s0)之后。 - Kevin

6

不,Silverlight在自己的CLR版本中运行。它也类似于WPF,而不是WPF本身。你需要做很多工作来进行转换。


时代在变化。请查看.NET 4.0中支持的可移植类库。您可以构建可用于不同支持平台的程序集:WP7、Silverlight WPF甚至XBOX应用程序。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接