我应该考虑从WPF切换到Silverlight吗?

时间:2012-05-06 10:55:09

标签: c# .net wpf silverlight

我一直在使用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以及可能出现的问题?

2 个答案:

答案 0 :(得分:3)

开始我考虑this回答。

重点是(实际上)Silverlight是WPF的子集,所以如果您的应用程序用户群只是PC / Window用户,您可能希望在WPF中开发您的应用程序,因为功能方面它仍然比Silverlight更丰富因为它是一个桌面应用程序,所以你拥有对本地机器的所有访问权限。如果您想在浏览器上开发基于Web的应用程序,不仅在PC上而且在Mac上,那么您希望在Silverlight中进行开发。

在我看来满足您的要求 WPF仍然是最佳选择。

答案 1 :(得分:2)

嗯,从经验来看,我可以说一些事情在Silverlight中不会像在WPF中那样起作用。我最近遇到的一些事情(虽然还有更多):

  • 绑定不能完全按照您的意愿工作。例如,在WPF中,默认情况下,绑定属性在文本字段上的keyUp上更改。在Silverlight中并非如此:它将在Blur上更新。像Caliburn.Micro这样的框架通过隐式添加它来解决这个问题。
  • WPF有一种称为Adorners的东西。这些基本上允许您为调整大小,旋转等内容添加小UI元素。您通常在设计器中看到的东西(拖动以调整大小)。你可以在Silverlight中制作类似的东西,但它有点复杂。
  • 我不确定WPF,但在Silverlight中,最终在UI线程上调用了web服务。您可以在任何地方进行设置,但实际的调用和回调是在mainthread上完成的。在处理可能需要一段时间执行的网络电话的结果时要记住的事情(如果我错了,有人可以纠正我)。

我认为您应该使用新应用程序的典型方式是从Silverlight开始,如果您确实需要,请转到WPF。另外,我被告知将Silverlight应用程序移植到winRT / Metro会稍微容易些,所以这可能是你想要检查的内容。

<强>加成 以下是来自MSDN的链接,描述了各种差异:http://msdn.microsoft.com/en-us/library/cc903925%28v=vs.95%29.aspx