2011-01-31 123 views
8

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

我想知道是否因为我们将实现XAML中的接口,它是否会兼容这两种技术?

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

+2

复制的http://stackoverflow.com/questions/3626936/silverlight-4-and-wpf-compatibility和http://stackoverflow.com/questions/598703/definitive-sources-for-the-the-difference-between-silverlight-and-wpf – 2011-01-31 14:27:22

+1

也dup的http://stackoverflow.com/questions/944608/ – SergioL 2011-01-31 15:55:37

回答

0

最终的Silverlight是/是唯一的WPF实体的一个子集,所以你往往会移植到Silverlight的时候找一些在WPF没有可用的元素,这样的事情包括:一定约束力的

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

依此类推。

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

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

2

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

你的第一步应该是看看有关wpf和silverlight不同的文档,以便更好地理解你的问题XAML Processing Differences Between Silverlight and WPF。不要停在那里。了解基于不同应用环境的设计模式。现在你开始了解你正在处理的事情。

在为wpf和silverlight构建UI时,必须非常小心所使用的控件和名称空间。共享用户界面代码可能非常乏味,创建两个独立的用户界面图层通常比较容易,它们在适用的地方使用共享模板。您在富客户端应用程序中使用的大部分UI功能都与Silverlight应用程序中的功能有所不同。您可能会在您的wpf应用程序中提供更丰富的数据激烈视图,而不是您的Silverlight应用程序中更简洁的视图。最终,你可能会达到相同的目标,但这将比重新部署和部署更困难。

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

如果您不打算在您的富客户端应用程序中拥有本地数据存储,那么请忘记下一段。

如果您打算有偶尔连接的离线客户端(wpf应用程序),您可能必须提出某种同步策略和体系结构。取决于你的数据结构有多复杂,这可能相当困难。用可用的框架构建复杂的同步逻辑是P.I.T.A.你可能必须建立自己的,或与另一个的限制生活。建议

一个说法:开始测试以及与测试结束