关于 Silverlight,我将概述我目前的经验。(注意:重新阅读这听起来有点消极,但我指出了缺失的功能。总的来说,我喜欢 Silverlight,在浏览器中使用 c# 的丰富 UI?Rocks)。
显着的区别是没有右键单击、鼠标滚轮支持、打印功能并且您无法打开新窗口。您的 OOB SL 应用程序不能位于通知区域。您可以在 javascript 中处理鼠标事件,但如果您希望您的应用程序移动 OOB,则不能。
SL 团队似乎也过于关注安全性,以至于对其 LOB 的适用性进行了削弱(没有新窗口、OOB 中本地系统访问的信任设置、通知区域等)。
其中一些使 Silverlight 应用程序感觉它与 Windows 不兼容。考虑突出显示文本,右键单击复制。或者右键粘贴。许多人使用的这些基本操作都丢失了。它也感觉像是一种陌生的 UI 体验,例如,您本能地用鼠标滚轮滚动网格,但它不起作用。这些东西适用于浏览器中的任何表格,但不适用于 SL。
编程方面,我没有太多使用 WPF,但据我所知,在解决某些问题的方式上存在一些显着差异。
SL 中缺少标记扩展。它也只有整数索引绑定,所以没有一些技巧就没有属性包。没有触发器,因此您总是必须编写代码来连接事件(在更动态的页面中令人恼火)。除了工具包中的 ImplicitStyleManager 之外,它没有可继承的样式,这不能胜任这项工作。
因此,对于某些 LOB 应用程序来说,这很好,对于其他应用程序,您必须跳过一些圈子(例如,如果您想要客户端的可定制性)。但这对于所有 LOB 应用程序来说肯定不是很好。
我的印象也是SL还没有完成,有很多小问题。例如,数据网格令人沮丧(不自动拉伸,很难子类化),自动完成框有点不稳定,导航框架有点笨拙,组合框/树视图很难绑定(如果你想要的话,它们真的没有整理出来将 SelectedItem 绑定到 itemsSource 的不同对象)。
总而言之,Silverlight 几乎就在那里,只要您准备好接受一些限制和琐事,就可以了。