<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ![](https://box.kancloud.cn/2016-03-18_56eb67c868925.jpg) 在[上幾篇](http://blog.csdn.net/jv9/article/details/6640506)Silverlight Navigation導航框架教程中,主要介紹了Silverlight Navigation導航框架基礎,本篇開始將結合實例介紹Silverlight Navigation導航框架的應用。按照個人經驗來講,學習Silverlight Navigation導航框架應用,首先需要了解導航框架對URI地址映射原理,所以,本篇將介紹Navigation導航框架URI映射機制。 **快速理解URI映射機制概念** 對于熟悉ASP.NET MVC路由機制的開發人員來講,ASP.NET MVC URL路由機制并不陌生。而Silverlight導航框架URI映射機制的概念和ASP.NET MVC URL路由機制相類似,使用指定格式的URI表示原始URI信息,并生成映射關系,在項目運行時,Silverlight導航框架URI映射類將解析預先定義的URI變量,向其對應URI映射發出請求,以達到頁面跳轉或參數傳遞的目的。 從原理上講,向Silverlight導航框架Frame類添加URI映射是定義UriMapper類的一個或者多個UriMapping實例的過程。而UriMapper類主要的功能是根據映射對象集合中指定的匹配對象規則,將統一資源標識符(URI)轉換為新的URI,將請求的URI映射到不同的URI中。需要注意的是URI映射是將URI指向一個字符串類型變量,而不是實際的文件路徑。 在定義映射規則時,不需要使用完全匹配的URI,可以包含占位符號作為替換標識。 為了方便演示本篇實例,將使用“[Silverlight實例教程 - 理解Navigation導航框架Frame類](http://blog.csdn.net/jv9/article/details/6576016)”文章中的源代碼項目作為演示項目。 **Navigation框架URI映射的使用** 在實際項目中,使用Silverlight導航框架URI映射功能前需要在App.xaml資源文件中添加一個UriMapper對象作為XAML資源,在資源文件中,將聲明所有需要URI映射的變量。最基本的代碼格式如下: ~~~ <Application??? ??x:Class="SilverlightNavigationDemo.App" ??xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ??xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ??xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"> ??<Application.Resources> ?????? ????<uriMapper:UriMapper?x:Name="PageMapper"> ????????<uriMapper:UriMapping?Uri="/Home"?MappedUri="/Views/Home.xaml"/> ????????<uriMapper:UriMapping?Uri="/{pageName}"?MappedUri="/Views/{pageName}.xaml"/> ????</uriMapper:UriMapper> ?????? ??</Application.Resources> </Application> ~~~ 在UriMapper對象中,添加UriMapping對象,該對象將當前Navigation框架傳遞的URI進行映射轉換,指向項目目錄中真實頁面路徑。? 在本實例中,使用<uriMapper:UriMapping Uri="/Home" MappedUri="/Views/Home.xaml"/>定義簡單導航框架URI映射規則,其含義是使用URI = “/Home”,匹配解析到 /Views/Home.xaml頁面,下圖中,URI在地址欄中,僅顯示/Home,而實際文件指向則是/Views/Home.xaml。 該映射規則是Navigation導航框架中最簡單的頁面映射。 ![](https://box.kancloud.cn/2016-03-18_56eb67d03a445.gif) **導航框架通用映射符號** 而UriMapper對象除了支持以上標準映射格式外,同時也支持占位符號作為通用映射符號,實現頁面映射功能,其中占位符號名稱作為變量的形式可以被匹配該段中的任何值替換。 其語法表示方式是:? **{占位字段名}** 例如: <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/> 該映射規則使用{pageName}作為通用映射占位符號,通過Navigation導航框架解析后,將指向/Views/{pageName}.xaml頁面。如果將{pageName}替換為Home,該規則將于第一條映射規則相同,如下: <uriMapper:UriMapping Uri="/Home" MappedUri="/Views/Home.xaml"/> 完成地址映射機制設置后,需要對當前項目的Navigation導航框架Frame類UriMapper屬性進行賦值,將該屬性關聯至App.xaml資源文件中的UriMapper類,其賦值方法如下: ~~~ <navigation:Frame?x:Name="ContentFrame"?Style="{StaticResource?ContentFrameStyle}"?UriMapper="{StaticResource?PageMapper}"?Navigated="ContentFrame_Navigated"?NavigationFailed="ContentFrame_NavigationFailed"> </navigation:Frame> ~~~ **導航框架映射機制傳遞參數** 通過Silverlight Navigation導航框架機制,可以實現頁面間參數傳遞功能。例如,在項目Home頁面輸入一個參數值,傳遞到About頁面中,其映射規則如下: ~~~ <uriMapper:UriMapping?Uri="/About/{parameter}"?MappedUri="/Views/About.xaml?parameter={parameter}"/> ~~~ 在Navigation導航框架運行時, 解析URI傳遞參數,指向到"/Views/About.xaml?parameter=Hello%20Silverlight",通過對NavigationContext的調用,About頁面即可獲得傳遞的參數值。(對于Silverlight Navigation傳參,將在下一篇詳細介紹) ![](https://box.kancloud.cn/2016-03-18_56eb67d059faa.gif) **URI映射機制優點** 使用Silverlight導航框架URI映射機制不僅可以提供友好的URI訪問格式,同時也可以用于隱藏項目頁面名稱,從而保護項目內部結構的作用。 需要注意的一點,Silverlight導航框架URI映射機制變量解析具有一定順序性,URI請求響應順序是由具體映射路徑到通用映射路徑。 例如,簡單修改以上映射機制規則的順序如下: ~~~ <uriMapper:UriMapper?x:Name="PageMapper"> ??????? <uriMapper:UriMapping?Uri="/{pageName}"?MappedUri="/Views/{pageName}.xaml"/> ??????? <uriMapper:UriMapping?Uri="/Home"?MappedUri="/Views/Home.xaml"/> ????????<uriMapper:UriMapping?Uri="/About/{parameter}"?MappedUri="/Views/About.xaml?parameter={parameter}"/> </uriMapper:UriMapper> ~~~ 在 Silverlight導航框架執行時, 如果試圖傳遞參數到About頁面,則會彈出異常信息,提示無法找到/About/Hello Silverlight頁面。 這是因為在UriMapper對象中,首先定義{pageName}的映射地址,在發出/About頁面請求時,導航框架映射機制將首先匹配 {pageName},如果匹配成功,也就不再繼續向下面的規則查詢匹配。而<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>和 <uriMapper:UriMapping Uri="/About/{parameter}" MappedUri="/Views/About.xaml?parameter={parameter}"/>相比較而言,更加具有通用性,所以正確順序應該是從局部到全局的方向,才能夠正確映射URI頁面。 ![](https://box.kancloud.cn/2016-03-18_56eb67d07f765.gif) Silverlight Navigation框架URI映射機制技巧提示 導航框架Uri映射路徑允許設置為空值,設置空值時可以創建一個初始化頁面,在第一次運行時映射將指向該初始化頁面,同時也可以防止在Uri映射出現空值時返回異常。 例如,修改Home頁面URI映射規則如下: <uriMapper:UriMapping?Uri=""?MappedUri="/Views/Home.xaml"/> 每次運行項目,Home頁面都會作為默認首頁載入。 在不使用Uri空值映射時,建議在Frame.NavigationFrailed事件中控制導航框架異常處理。例如,當用戶重復使用導航后退功能,直到導航第一個頁面時為用戶設置提示信息,避免出現異常操作。 Silverlight Navigation導航框架URI映射機制就講到這里,下一篇,將通過導航框架傳參功能,理解URI映射機制的應用。 [本篇源代碼](http://www.silverlightchina.net/uploads/soft/110808/1-110PQA407.rar) [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人
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看