Silverlight和WPF兼容性

时间:2011-01-31 14:05:47

标签: .net wpf silverlight compatibility

我们正在计划一个将在Silverlight和WPF中开发的应用程序。

我想知道,既然我们将在XAML中实现接口,它是否兼容两种技术?

从一种技术移植到另一种技术时,我们应该期待什么样的问题?

2 个答案:

答案 0 :(得分:2)

我已经构建了一个双目标silverlight / wpf应用程序。它并不像把它们移到另一个那么简单......

您的第一步应该是查看有关wpf和silverlight不同之处的文档,以便更好地了解您的问题XAML Processing Differences Between Silverlight and WPF。不要止步不前。了解基于不同应用程序环境发挥作用的设计模式。现在你开始了解你正在处理什么。

在为wpf和silverlight构建UI时,必须非常小心控件和使用的命名空间。共享UI代码可能非常繁琐,创建两个使用共享模板的独立UI层通常更容易。您在富客户端应用程序中拥有的大部分UI功能将与Silverlight应用程序中的功能不同。您可能会在您的wpf应用程序中提供更丰富的数据密集视图,而不是在您的silverlight应用程序中提供更简洁的视图。最后,您可能会实现相同的目标,但它将比仅重新定位和部署更难。

如果您是从头开始构建应用程序,那么我建议您同时构建wpf应用程序和silverlight应用程序。通过这样做,您将有机会抽象出不同环境中使用的服务层和数据访问策略。 Silverlight可能需要通过Web服务访问数据,而您的wpf应用程序可能与本地数据库实例通信。这很容易实现。使用IoC容器或其他东西注入适当的服务实现。该区域提供了大多数代码重用的机会。您可以创建所有视图逻辑和服务逻辑,以便在两个UI之间共享。您还可以创建共享业务逻辑和数据访问逻辑。

如果您不想在富客户端应用中使用本地数据存储,请忘记下一段。

如果您计划偶尔连接离线客户端(wpf app),您可能需要提出某种同步策略和架构。根据您的数据结构的复杂程度,这可能相当困难。使用可用框架构建复杂的同步逻辑是P.I.T.A.你可能需要建立自己的,或者受到另一个人的限制。

一条忠告:从测试开始,以测试结束

答案 1 :(得分:0)

最终Silverlight只是WPF实体的一个子集,因此在移植到Silverlight时,您将倾向于发现WPF中缺少某些可用元素,包括:

  • Silverlight缺乏某些绑定支持。
  • 调整SilverF中不存在的WPF中可用的依赖项属性的更好方法。
  • 使用Silverlight而不是WPF的Triggers在代码中触发故事板。
  • WPF和Silverlight使用不同的核心库,这意味着无法在WPF / Silverlight应用程序之间共享库。
  • 与WPF相比,Silverlight中可用的内置控件较少。

等等。

我猜想你最常遇到的问题就是移植你的自定义控件,与你的很多其他代码一样,这些控件在很大程度上可以转移,但两者之间会有很多警告。标记和代码背后。您可能必须调整大多数WPF控件以在Silverlight中进行编译,更改模板,资源等的TargetType值,并将一个控件替换为另一个控件(或者有时必须创建自己的控件以实现目标,一个例子是Silverlight中缺少的UniformGrid)。

我会发布链接,但其他人似乎已经暴露了你需要知道的关于网络的一切。玩得开心。