Silverlight 2 RC0发布了

【原文地址】Silverlight 2 Release Candidate Now Available | Silverlight 2 正式版之候选版本发布了
【原文发表日期】 Thursday, September 25, 2008 9:54 PM

今天晚上,我们发布了Silverlight 2正式版的第一个公开候选版本(release candidate,简称RC)。

在我们最终发布正式版之前,我们还有一把计划修补的缺陷。然而,我们还是发布了今天这个版本,以便开发人员可以开始更新他们现有的Silverlight Beta2应用,这样,在最终版本发布之日,他们的应用就可以工作;而且还能允许开发人员报告我们内部没能发现的任何最后的紧要问题(请到www.silverlight.net论坛上报告任何这样的问题)。

重要注意事项: 今天我们发布的只是Silverlight的开发人员运行时版本(以及相关的VS和Blend工具), 并没有发布正规的终端用户版本。这是因为我们想要给予现有的开发人员一段简短的时间,在允许网站正式启用Silverlight 2之前,更新他们的应用,使用最终的Silverlight 2的APIs。在Beta2和这个RC版本之间有一些重大的变动,我们想要确保一旦最终版出来,现有的网站就可以很快地更新到最终版。因此,目前你只可以用RC来做开发,在最终版发布之前,你不能使用新的APIs上线(但最终版不久就会发布)。

你可以在这里下载今天的Silverlight RC版本和相关的VS和Blend工具支持。注意, Expression Blend在Blend 2.0 SP1中对Silverlight 2提供了支持。你需要先安装Blend 2.0,之后安装SP1服务包,该服务包添加了对Silverlight 2的支持。如果你还没安装Blend 2.0的话,你可以在 这里下载它的免费试用版本。

Beta2->RC API 更新

今天的RC版本包括了一堆缺陷修补和一些显著的性能优化。

今天的RC版本还包括许多API变动,旨在修正Silverlight和.NET框架完整版间的差距。虽然变动的数目不小,但绝大部分变动本身都是比较小的(象参数次序,方法和属性的重新命名,在命名空间之间移动类型等)。你可以阅读这篇博客贴子,下载这篇文档,了解与Beta2版本间种种已知的重大API变动。

我们还更新了随Silverlight发布的控件的样式,还修改了它们所使用的一些状态组别和控件模板的名称。在从Beta2版升级时,你也许会发现这样做比较有利些: 暂时去掉你自己的定制样式模板,先让你的应用在RC下正常工作,之后,再一一加入你自己的样式定义,以解决任何由于重新命名或行为变动而造成的问题。

如果你在从Beta2升级到RC版的过程中遇上难缠问题的话,请去www.silverlight.net论坛上发贴询问(Silverlight开发团队的成员会在那里帮助大家)。如果一两天之后还没得到答案的话,请给我(scottgu@microsoft.com)发邮件,我会帮你或者给你联系知道答案的人。

新的控件

今天的候选版本包括了一堆新的功能和变动,以及针对的VS和Blend工具。大体上讲,你会发现包括了控件,networking,数据缓存,布局,显示,媒体stack和其他组件以及子系统方面的的许多改进。

在接下来的几个月里,我们还将发布许多新的Silverlight 2控件(不久会撰文讨论相关细节),今天的RC版本包括了3个新的核心控件 - ComboBox, ProgressBar, 和 PasswordBox - 我们已将它们直接加到了核心Silverlight运行时的下载包中(该下载包只有4.6MB 之大,只花几秒钟即可安装):

在运行的时候,这些控件的默认外观如下图所示:

Silverlight 2中的ComboBox支持标准的DropDownList语义,除了象上面那样静态定义个项外, 你也可以对其进行数据绑定。例如,我们可以象下面这样定义一个"Person"类:

然后象这样在页面上加一个ComboBox:

然后编写下面的代码,将一个Person对象集合绑定到ComboBox(通过设置它的ItemSource属性):

然后在运行的时候,我们的简单应用就会显示绑定了的Person的名字(注意,我们在上面的 ComboBox 上设置了DisplayMemberPath属性来显示Person对象的"Name"值):

然后,我们可以实现一个象下面这样的SelectionChanged事件处理函数,在ComboBox中的某个Person被选中时,运行相应代码:

注意上面,我们是如何使用ComboBox的"SelectedItem"属性, 从数据绑定的ComboBox中获取被选中的"Person"对象的引用的。

然后我们可以调用MessageBox.Show()辅助方法(RC中新有的)来显示一个模式对话框,显示所选中的Person对象的一些细节:

新的控件皮肤

Silverlight 2的最终版将会拥有,比之Beta1和Beta2,一套更为精致的默认控件模板皮肤。我们对默认控件模板的目标是,其外观将非常专业,也非常有吸引力,可以在绝大多数应用中原样(as-is)使用(而不要求你定制样式模板),还可以使用Expression Blend轻松地细调。

今天的RC版本中的皮肤非常接近于我们计划发布的皮肤的最终外观(我们还在做些RC版后的若干个最后的调整,在控件的焦点颜色方面,以及对一些控件模板中的几个问题的精敲细打)。下面是今天的RC版本中的DataGrid, RadioButton, CheckBoxes, 和 DatePicker的默认外观:

注意上面的DatePicker控件允许用户键入一个日期(使用了屏蔽编辑来确保日期之有效性),或者他们可以点击文本框右边的日历图标,使用弹出的日历控件中选择日期:

当然,Silverlight和WPF一个最强大的功能是,设计师和开发人员可以完全定制任何控件的观感(look and feel)的能力,这可不是对颜色和字体的简单的样式化,你可以完全地改变控件的视觉界面,以及定制其行为(例如,添加动画效果),而不用编写任何代码。

在Expression Blend中,右击任何Silverlight控件,选择"Edit Control Parts (编辑控件部件)" 子菜单打开和编辑其控件模板:

在控件模板编辑模式中,你可以对控件的任何子元素进行操作(例如,复选框的内部内容),以及定制控件能显示的每个"state(状态)"(注意下面用红笔圈出的状态面板)。这允许设计师定制控件在每个不同状态(例如,checked, unchecked, mouseover等等)下的外观。Silverlight会根据用户的动作自动处理控件从一个状态到另一个状态转移的动画效果:

你可以在这里我以前的一个博客贴子中了解Silverlight的视觉状态模型(Visual State Model)的工作原理。

Silverlight的早期版本经常在亚像素(sub-pixel)的位置显示图形,这会导致线条和形状有时会显得"fuzzy(模糊)"。Silverlight的RC版本有一个叫做"layout rounding(布局舍入)" 的功能,会导致布局系统将控件的最后尺寸四舍五入为整数("pixel snapping"),导致更为清晰的线条,同时也少了显示中的赝象。这个功能现在是默认启用的,可以让应用更好看些。

结语

Silverlight的最终版本离发布也不远了,在这么短的时间内,进展如此之大,这真是个着实让人惊叹的项目。

如果你有现成的Beta2应用,请开始为最终版做准备吧, -- 我们一旦发布Silverlight 2最终版,现在安装了beta版的用户会自动地升级到使用最终版。用这个候选版本充分测试你的应用,会确保你在最终版发布后的几小时内就可以轻松地升级你的应用,在最终版下正常工作。

如果你在今天的RC版本中发现问题的话,请告诉我们,请一定要去www.silverlight.net上的论坛上发贴子公布。

希望本文对你有所帮助,

Scott