[译]Silverlight 2 Beta 2 新特性详解
众所周知,Silverlight 2 Beta2本周发布。早上起来看来已经有好同志redmoon发布消息,Google一下发现AdoGuy写了一个很完整的例子,最近项目是用Silverlight也需要关注,自己翻译下跟大家一起分享。:)
不废话,开始
原文: http://adoguy.com/2008/06/06/Using_ADO_NET_Data_Services_in_Silverlight_2_Beta_2.aspx
Get Started: http://silverlight.net/getstarted
Scott Gu: http://weblogs.asp.net/scottgu/archive/2008/06/06/silverlight-2-beta2-released.aspx
框架上的变动
SDK 控件 Vs Plugin(插件) 控件
对于我最大的改变莫过于将原来在 System.Windows.Controls.dll中的控件转移到 System.Windows.dll中。这样.xap文件的大小将会变小。在Silverlight2 beta 1中Hello World程序的 .xap文件大小是230K. 在Beta 2中则只有4K.
微软将越来越多的控件和功能添加插件安装文件中,导致了Runtime的大小从4M变大到4.5M
Isolated Storage 大小
默认大小从Beta 1中的1K变大到1MB.
取消 Event Bubbling(事件响应)
在Beta1和之前的版本中,Event Bubbling不能取消. silverlight框架允许你将事件标记为处理过,但是实际上并不能停止。在Beta2中,当你把事件标记为处理过,他将不会通过 render tree(渲染树) 传播
2{
3 // Cancels the bubbling
4 e.Handled = true;
5}
Silverlight.js
Silverlight.js 脚本变化了并且在Beta2 SDK中更新了,所以当你在需要部署Beta 2程序时请记得替换掉原来的Js来确保兼容性.
DataBinding
FrameworkElement 类 (Silverlight中大多数显示元素的基类) 现在支持 BindingValidationError 事件,此事件在不能正确绑定到Two-way(双向绑定)时触发. 对之支持的是, 绑定现在支持通过设置 NotifyOnValidationError 和ValidatesOnExceptions 属性来打开验证错误提示.
Code-only Storyboards
你可以在代码中创建 Storyboards来给渲染树中的元素添加动画, 而再也不需要添加到渲染树中去了。这样允许你只需在代码中给(和 内嵌的动画)添加Storyboards
Cascading Properties(装饰属性)
Beta 2 移除了Control类中的一些重要属性, 这样会允许你确定UsesControl上设定这些属性并间接设定了子控件的默认属性,这些属性包括:
- Foreground
- FontFamily
- FontSize
- 等等.
如果你在UserControl(或者其他基于控件的父控件)中, 他的子控件将"继承"这些属性,例如:
2xmlns=""
3xmlns:x=""
4Foreground="Blue"
5FontSize="24">
6 <Grid x:Name="LayoutRoot">
7 <TextBox Text="Hello" />
8 </Grid>
9</UserControl>
XamlReader and Namescopes
使用 XamlReader 来在运行时生成动态 XAML 总会为XAML产生一个新的namescope的副效应,在Beta 2中,你可以有选择的创建一个namescope
如果你对namescope不熟悉,下面的Blog可以帮到你
http://nerddawg.blogspot.com/2007/05/namescopes-in-silverlight.html
控件上的变动
TemplateParts
如果你已经在你的应用程序中使用了 ControlTemplates , 一些模板 (尤其是 TextBox) 有一点变动. 这意味着你需要重命名一些TemplateParts 查看你原来使用 TemplateParts 的地方,不幸的是编译器不会检查错误需要手动更改
VisualStateManager
在Beta 2, Microsoft 介绍了一个新概念来处理事件和用户交互,例如,当用户鼠标hovers over(晃过)控件时, 控件得到焦点.在Beta 2之前,你可以为 Storyboards 定义 TemplateParts, 但是这样对于设计器来说,在创建一个控件时很难。对于 VisualStateManager 有视觉状态组,每个都可以有自己的时间段和其他属性。 在Blend中就会容易许多
详见: http://weblogs.asp.net/scottgu/archive/2008/06/06/silverlight-2-beta2-released.aspx
新控件: TabControl
注: 笔者之前也写过一个TabControl 看来用不上了,改天跟大家分享源码了
Multiline TextBox
可以通过AcceptsReturn 和TextWrapping 属性来设置
WatermarkedTextBox 移除了
不过在Silverlight2 Beta 1源码中已经包含了,有兴趣也可以自己把源码抽出来使用
Extended Control
System.Windows.Controls.Extended.dll 仍然存在而且包含了一些重要控件:
- Calendar
- DatePicker
- GridSplitter
- TabControl
如果要是用这些控件需要引入System.Windows.Controls.Extended.dll到XAML中,而不再包含在默认的命名空间下。
Tooltip
ToolTips 不再能在控件属性中直接设置,你必须要使用ToolTipService . 例如:
<Button ToolTipService.ToolTip="This is ToolTip text"/>
DeepZoom
有一个新的DeepZoom Composer工具, 在Beta2之前会产生一个图像的集合还有一个包含了关于这些图像元数据的.bin文件. 在Beta2中,这个文件现在是一个xml
文件(叫.dzi).
园子里关于DeepZoom的详解: http://www.cnblogs.com/zhouyinhui/archive/2008/04/14/1153371.html
DataGrid
DataGrid 在不断的成熟中包含了许多新特性像列排序,行排序和其他更多的控件模板。你所正在使用的DataGrid可能需要重新编码了。。。:(
Networking 上的变化
Web Service
Web Services 现在支持 cross-domain 服务请求 (使用 cross-domain policy 文件). WCF 服务现在支持duplex services(双重服务, 但是basicHttpBinding 仍然是唯一的受支持的绑定.
ADO.NET Data Services
ADO.NET Data Services (别名 Astoria) 将支持 Silverlight. 注意使用此项服务你需要.NET 3.5 SP1 (beta) 和 Visual Studio 2008 SP1 (beta)来编写可以支持这项功能的服务端 ADO.NET Data Services , 但是客户端已经包含在Beta2中了. 注意现在这种方式下所有的请求都是异步的.
Web Request Exception
现在异常将在访问Result时触发,这样你就可以使用try, catch来处理这些可能出现的异常了
ServiceReference.clientconfig
Web Services 调用将会包含在 ServiceReference's.clientconfig中 (自动生成).如果你要改掉服务绑定和其他参数,现在可以在.clientconfig中干了
在 Cross Domain Policy 中的头文件支持
cross domains现在都明确禁止了头文件,除非他们在cross domain header policy中标明支持了
Sockets
Sokcets 现在可以连接到任何启用了domain policy 文件的服务器。除此之外,端口的范围也扩大了来启用更多的通信机制。
工具上的变动
Silverlight Linkage
介于ASP.NET 项目和 silverlight 项目的链接现在允许你确定制定的生成目录这样你可以可以有两个版本的 .xap文件(例如: Debug和Release). 除此之外,"Add Silverlight Link..."选项将被移除。你可以在 ASP.NET项目属性中的Silverlight选项卡中添加Silverlight项目.
"Add Service Reference..."
原来的集合类型DataContract现在变成了 ObservableCollection<>.
Blend
Blend 2 六月的预览版包括了一些新特性:
- ControlTemplate 编辑支持
- VisualStateManager 支持
- 设计器中新 的Breadcrumb 导航
- 启用 "Make Button" 功能 (选择一些项并用这些项创建Button控件).
- 嵌入字体支持.
还有什么没讲?
在Silverlight 2 RTM 发布之前肯定还有很多改进空间,在微软的公开发布之外,还有其他一些还没有包含进来:
- ProgressBar
- ComboBox
- 更好的 WCF 支持