【问题标题】:How portable is Silverlight code to WPF?Silverlight 代码对 WPF 的可移植性如何?
【发布时间】:2009-02-08 12:39:13
【问题描述】:

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

public partial class Page : UserControl

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

public partial class Page1 : Page

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

这只是一种异常情况,还是复杂的 Silverlight 应用程序在没有重大更改的情况下几乎无法移植到 WPF?

【问题讨论】:

    标签: wpf silverlight


    【解决方案1】:

    我的理解是除了都使用 XAML 之外,Silverlight 和 WPF 本质上是不同的。不过,它们之间似乎确实存在交叉授粉,因此当 Silverlight 交付时没有像 WrapPanel 这样的东西,有人在 Silverlight 中编写了自己的实现(最终被添加到 Silverlight 工具包中)。

    不要期望从 WPF 复制和粘贴,除非它是微不足道的代码。 Silverlight 中的数据绑定等内容略有不同(例如:不绑定到其他元素)。但大多数时候都有解决方法。

    【讨论】:

      【解决方案2】:

      看看this article,它谈到了从 SL 移植到 WPF 需要做的许多事情。那篇文章中还有一个链接到 Scott Gu 关于这个主题的博客;但是,这篇文章谈到了 The Gu 的博客中没有提到的一些差异。

      【讨论】:

      • 请注意,上面的链接已损坏
      【解决方案3】:

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

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

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

      【讨论】:

        最近更新 更多