
在Web或者Windows傳統應用項目中,導航功能是基礎功能之一,其目的是將用戶目標和應用業務目標協調綜合起來,從而幫助用戶能夠快捷的瀏覽信息和獲取服務。一個友好的導航功能不僅僅能夠提高用戶的閱讀效率,而且還能反映其項目品牌形象以及影響其品牌可信度。在Silverlight中,導航框架(Navigation Framework)是Silverlight核心框架之一,其功能與傳統Web和Windows應用導航功能類似。在隨后的幾篇文章中,詳細學習Silverlight導航框架的原理和實例應用,希望通過這套系列教程,幫助Silverlight開發人員理解和掌握Silverlight Navigation Framework。
**Silverlight導航框架概述**
在傳統導航功能中,經常會出現以下幾個技術特征:
1.???能夠記錄瀏覽歷史信息;當用戶點擊某個鏈接后,跳轉到下一個功能頁面,而導航功能能夠記錄訪問瀏覽過的信息鏈接,通過“前進”或“后退“按鈕能夠輕松的返回到上一個訪問頁面;
2. 支持通過URL進行傳參,特別是在Web應用項目中,在導航過程中,使用URL進行傳遞參數是最常用的功能;例如:從瀏覽用戶信息頁面,跳轉到編輯用戶信息頁面,可以通過URL傳遞用戶ID到編輯頁面,是其能夠通過該ID讀取到數據庫中指定用戶信息;
在Silverlight 3之前的版本,Silverlight沒有特定的導航框架,項目中頁面之間的切換是通過修改RootVisual布局容器的內容而實現的。在后文將詳細介紹早期頁面導航的方法和步驟。
~~~
private?void?Application_Startup(object?sender,?StartupEventArgs?e)
{
????this.RootVisual?=?new?MainPage();
}
~~~
在Silverlight 3版本中, 微軟推出Navigation Framework導航框架,同時推出Silverlight Navigation應用模板,幫助開發人員創建Silverlight導航應用。 在導航框架中,不僅實現了傳統導航功能,而且加入了許多獨特的新特性。例如,地址映射,瀏覽器集成導航等。為了加大Navigation Framework的靈活性,在Silverlight 4中,增加新的屬性和接口允許開發人員創建擴展導航功能。在隨后的幾篇中,我們將詳細講解這些導航功能應用和實例。
**Silverlight導航框架應用方案**

1.?? ?**應用項目內部導航**;
Silverlight項目內部導航是導航框架主要功能之一,導航框架提供Frame和Page控件類控制Silverlight項目頁面承載以及頁面導航切換功能。其中Frame類如同一個頁面容器控件,用于協助導航頁面的切換和顯示;而Page類用于承載具體內容頁面。
2.?? ?**應用項目外部導航**;
應用項目外部導航是指導航框架支持應用程序外部資源的直接訪問鏈接。 Silverlight導航框架支持開發人員通過EnableNavigation屬性設置是否允許外部導航功能,同時支持HyperlinkButton控件導航頁面到應用外部資源。例如:
<HyperlinkButton NavigateUri="http://www.silverlight.net" Content="訪問Silverlight官方網站" TargetName="_new" />

3.?? ?**Web瀏覽器集成導航**;
Silverlight是基于Web瀏覽器的富應用插件,對于其頁面導航切換,可以被集成到瀏覽器導航功能中。通過設置Silverlight導航框架JournalOwnership屬性可以指定是否將當前應用與Web瀏覽器導航相集成,而在默認情況下,JournalOwership屬性值為Automatic,表示當前框架為頂級框架時,將于瀏覽器導航集成在一起;而當屬性值設置為OwnsJournal時,則表示禁止瀏覽器集成導航功能,當前應用導航框架內部保留導航日志。

值得注意的是,Web瀏覽器集成導航功能和瀏覽器版本相互關聯,在Internet Explorer 7之前的版本,如果需要瀏覽器支持集成導航功能,需要在Silverlight承載頁面中添加一個名為“_sl_historyFrame”的iFrame框架,該框架將記錄應用瀏覽記錄。從Internet Explorer 8開始以及隨后的版本,在不需要該框架支持的情況下,也可以記錄應用瀏覽記錄。這是因為在Internet Explorer 7之前的版本無法對當前Javascript API中location.hash對象進行更新,在hash標簽沒有更新的情況下,瀏覽器會默認處于當前位置,不會生成瀏覽歷史記錄,Internet Explorer 8之后的版本已經不存在這個問題。
4.?? ?**應用擴展導航系統**;
雖然Silverlight導航框架提供強大的應用內部,外部以及瀏覽器集成導航功能,但是在實際項目中,仍舊存在不靈活的弊端。為了使Silverlight導航框架更加靈活多變,在Silverlight 4中,導航框架提供一個新的屬性和接口ContentLoader和INavigationContentLoader,允許開發人員創建應用擴展導航功能。
在隨后的章節中將對以上功能詳細講解和演示。在Silverlight 5中導航功能沒有較多的更新,只是在其原有基礎上對其性能進行了優化,下圖為導航框架在Silverlight各版本中的特點更新:

**Silverlight導航框架優勢**
Silverlight導航框架優勢可總結如下:
1.?? ?簡潔API接口,降低使用復雜度,減少開發工作量,同時方便開發人員日常維護;
2.?? ?導航框架能夠記錄歷史瀏覽信息,通過瀏覽器“前進”或“后退”按鈕,可以輕松訪問上一次訪問的頁面;
3.?? ?能夠支持URL傳參功能,特別是在Web應用項目中,在導航過程中,使用URL進行傳遞參數是最常用的功能;例如:從瀏覽用戶信息頁面,跳轉到編輯用戶信息頁面,可以通過URL傳遞用戶ID到編輯頁面,是其能夠通過該ID讀取到數據庫中指定用戶信息;
4.?? ?支持深度鏈接(Deep Link),可通過鏈接訪問不同頁面狀態下的應用;
曾經有開發人員詢問過,什么是Deep Link?這里給出簡單的解釋:
深度鏈接(Deep Link)是指項目中一個特定頁面或者資源的超級鏈接地址,該鏈接保存某特定的狀態,可被直接定位訪問。例如:[http://www.silverlight.net/index.html](http://www.silverlight.net/index.html)是主頁鏈接,而http://www.Silverlight.net/contact.html則是該網站的一個深度鏈接,通過該地址可以直接定位到聯系頁面;或者http://www.silverlight.net/image/logo.gif,該圖片資源的地址同樣是一個深度鏈接。在后文,將詳細演示和介紹Deep Link的應用。
更多Silverlight實例教程系列:
[Silverlight實例教程系列 - Silverlight Validation驗證實例](http://silverlightchina.net/html/zhuantixilie/getstart/2010/0924/2035.html)
[Silverlight實例教程系列 - Silverlight Out-of-Browser實例](http://silverlightchina.net/html/zhuantixilie/getstart/2010/0809/1709.html)
[Silverlight實例教程系列 - Expression Blend實例中文教程](http://silverlightchina.net/html/zhuantixilie/getstart/2010/0409/978.html)
歡迎大家加入“專注Silverlight”QQ技術群,歡迎大家加入一起學習討論Silverlight&WPF&Widnows Phone開發技術。?
22308706(一群) 超級群500人?
37891947(二群) 超級群500人?
100844510(三群) 高級群200人?
32679922(四群) 超級群500人?
23413513(五群) 高級群200人?
32679955(六群) 超級群500人?
61267622(七群) 超級群500人?
88585140(八群) 超級群500人?
128043302(九群 企業應用開發推薦群) 高級群200人?
101364438(十群) 超級群500人?
68435160(十一群 企業應用開發推薦群)超級群500人
- 前言
- Out of Browser開篇
- Out of Browser配置,安裝和卸載
- Out of Browser的自定義應用
- Out of Browser存取本地文件系統
- Out of Browser與COM的交互基礎
- Out of Browser與Office的互操作
- Out of Browser的Debug和Notifications窗口
- Out of Browser音樂播放器
- Out of Browser與COM互操作實例
- Out of Browser在線更新和Silent安裝
- Validation數據驗證開篇
- Validation數據驗證基礎屬性和事件
- Validation數據驗證DataAnnotation機制和調試技巧
- Validation服務器端異步數據驗證
- Validation客戶端同步數據驗證
- Validation用戶提交數據驗證捕獲
- Datagrid,Dataform數據驗證和ValidationSummary
- 自定義擴展Validation類,驗證框架的總結和建議
- Navigation導航框架開篇
- 理解Navigation導航框架Frame類
- 理解Navigation導航框架Page類
- Navigation導航框架URI映射機制
- Navigation導航框架傳遞參數