[譯]Silverlight 2 Beta 2 新特性詳解

[譯]Silverlight 2 Beta 2 新特性詳解


原文: http://adoguy.com/2008/06/06/Using_ADO_NET_Data_Services_in_Silverlight_2_Beta_2.aspx


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(渲染樹) 傳播


1void nested_MouseEnter(object sender, MouseEventArgs e)


2{


3 // Cancels the bubbling


4 e.Handled = true;


5}


Silverlight.js


Silverlight.js Script變化了並且在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(或者其他基於組件的父組件)中, 他的子組件將"繼承"這些屬性,例如:


引用:


<UserControl x:Class="SilverlightApplication5.Page"


xmlns=""


xmlns:x=""


Foreground="Blue"


F>


<Grid x:Name="LayoutRoot">


<TextBox Text="Hello" />


</Grid>


</UserControl>


XamlReader and Namescopes


使用 XamlReader 來在執行時產生動態 XAML 總會為XAML產生一個新的namescope的副效應,在Beta 2中,你可以有選擇的建立一個namescope


如果你對namescope不熟悉,下面的Blog可以幫到你


http://nerddawg.blogspot.com/200 ... 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/a ... 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 支援


本文章來自於神魂顛倒論壇 http://bbs.flash2u.com.tw


原文網址:http://bbs.flash2u.com.tw/dispbbs_220_84660.html