星辰.Net技术社区论坛

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