Silverlight代码对WPF的可移植性如何?

时间:2009-01-27 00:30:11

标签: wpf silverlight

在Silverlight中,我注意到代码隐藏的Page类继承自UserControl:

public partial class Page : UserControl

在WPF中,代码隐藏的Page Class继承自Page:

public partial class Page1 : Page

我在想Silverlight,作为WPF的一个子集,你可以将大块的Silverlight代码复制到WPF中,反之亦然。但是在这样的基础水平上这样的差异表明情况并非如此。

这只是一个异常或复杂的Silverlight应用程序在没有重大更改的情况下对WPF几乎不可移植吗?

3 个答案:

答案 0 :(得分:4)

看看this article,它谈到了从SL移植到WPF所需要做的许多事情。该文章中还有一篇关于Scott Gu的博客的链接;然而,这篇文章谈到了顾的博客上没有提到的一些差异。

答案 1 :(得分:4)

我理解的方式是,除了使用XAML之外,Silverlight和WPF本质上是不同的。但它们之间似乎确实存在交叉授粉,所以当Silverlight没有像WrapPanel那样发布时,有人在Silverlight中编写了自己的实现(最终它被添加到Silverlight Toolkit中)。

除非是琐碎的代码,否则不要期望从WPF复制和粘贴。像Silverlight中的数据绑定之类的东西略有不同(例如:没有绑定到其他元素)。大多数时候都有解决方法。

答案 2 :(得分:1)

Silverlight被设计为WPF的兼容子集(至少在“有意义”的地方)。这意味着将应用程序从Silverlight移植到WPF应该是相对简单的。走向另一个方向(WPF - > Silverlight)可能会更具挑战性。

您在问题中提供的示例说明了这一点; Silverlight中不存在默认WPF项目模板中使用的Page类。但是UserControl类同时存在。因此,您可以将来自Silverlight应用程序的xaml和代码从UserControl复制并粘贴到WPF应用程序中,而不会出现任何问题。

Silverlight的某些部分与WPF不兼容,例如,所有HTML DOM Bridge内容在WPF应用程序中都没有任何意义,因此它不存在。 MediaElement类也有很大的不同。