我是否应该考虑从 WPF 切换到 Silverlight
本文关键字:WPF Silverlight 是否 | 更新日期: 2023-09-27 18:33:16
我一直在将WPF用于一个新项目,但远未完成。这是一个爱好项目,也是一个非常有用的项目。
我希望具有跨平台兼容性(即Linux + Mac + Windows(,但Windows是主要目标。我非常擅长Web语言,C#和Erlang,但C/C++不在其中,我讨厌Java。因此,为我选择 WPF 是很自然的举动。
但是,在阅读了 http://www.mono-project.com/WPF 等众多来源后:
我此时,我们强烈建议对 WPF 感兴趣的用户采用 相反,Silverlight,因为它现在可以在浏览器之外使用,并且 提供一组丰富的跨平台 API 和功能。
开始怀疑我是否应该将我的应用程序移植到 Silverlight 并改用它。
几个事实:
- 我的应用程序是纯桌面应用程序,并且注定如此。它需要对系统资源的较低级别的访问权限(但不是那么低,即 .NET 还不够(。
- 我希望这三个平台支持,但Windows是主要关注点。
- 我更喜欢 C# 和 .NET 以及等效于 WPF 的东西,其中 UI 是声明性的,以干净的方式与代码分离,并允许丰富的用户界面。
我听说Silverlight已经在Mac上运行了,并且可以通过Moonlight支持Linux。
我是否应该考虑从 WPF 切换到 Silverlight,可能会出现哪些问题?
首先,我会考虑这个答案。
重点是(实际上(Silverlight是WPF的一个子集,因此如果您的应用程序用户群仅是PC/Window用户,则可能需要在WPF中开发应用程序,因为功能方面它仍然比Silverlight丰富得多,并且因为它是一个桌面应用程序,因此您可以访问本地计算机。如果要开发一个基于 Web 的应用程序,它不仅在 PC 上运行,而且在 Mac 上运行,那么您需要在 Silverlight 中进行开发。
在我看来,对于您的要求,WPF仍然是最佳选择。
好吧,根据经验,我可以说有些东西在 Silverlight 中不起作用,就像在 WPF 中那样。我最近遇到的一些事情(尽管还有更多(:
- 绑定的工作方式并不完全符合您的要求。例如,在 WPF 中,默认情况下,绑定属性在文本字段上的 keyUp 上更改。在Silverlight中,情况并非如此:它将在Blur上更新。像Caliburn.Micro这样的框架通过隐式添加来解决这个问题。
- WPF有一个名为Adorners的东西。这些基本上允许您为调整大小、旋转等添加小的 UI 元素。您通常在设计器中看到的内容(拖动以调整大小(。你可以在 Silverlight 中制作类似的东西,但它有点复杂。
- 我不确定WPF,但是在Silverlight中,对Web服务的调用最终是在UI线程上完成的。您可以在任何需要的地方设置它,但实际的调用和回调是在主线程上完成的。在处理可能需要一段时间才能执行的网络调用结果时要记住的事情(如果我错了,有人可以纠正我(。
我认为您应该使用新应用程序的典型方法是从 Silverlight 开始,如果您确实需要,请迁移到 WPF。另外,有人告诉我,将Silverlight应用程序移植到winRT/Metro稍微容易一些,所以这可能是你想要检查的东西。
加法以下是 MSDN 描述各种差异的链接:http://msdn.microsoft.com/en-us/library/cc903925%28v=vs.95%29.aspx