91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Silverlight中導航框架與動態加載的原理是什么

發布時間:2021-07-20 11:28:36 來源:億速云 閱讀:315 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Silverlight中導航框架與動態加載的原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1. Silverlight 3 的導航框架簡介

Silverlight 提供了內置的導航框架,可以比較輕松的在 Silverlight Page 之間進行切換,并且可以和瀏覽器的前進、后退按鈕集成,下面的代碼可以簡單的說明其用法:

Silverlight中導航框架與動態加載的原理是什么

這段代碼很簡單,通過設置 HyperLinkButton 的 NavigationUri 和 TargetName 兩個屬性,可以讓指定的 Frame 去加載指定的 Silverlight Page 。

2. 常見的動態加載解決方案

當 Silverlight 項目比較大的時候, 很自然的會想到將 Silverlight 項目拆分成多個 xap 文件,進行按需加載,這個實現起來也不難。通常的做法是使用 WebClient 或者 HttpWebRequest ,向服務端請求所需的 xap 文件,然后通過 xap 壓縮包內的 AppManifest.xaml 文件,獲取到 xap 文件內部打包的 dll 文件信息,在客戶端通過反射進行加載。

3. 導航框架與動態加載相結合時遇到的問題,原因與解決方法

如果將這兩者結合起來,利用 Sliverlight 內置的導航框架來加載動態加載的 xap 文件內部的 Silverlight Page ,對應用程序的開發和用戶體驗都是有很大幫助的:對開發方面來說,不用反射加載,而是使用 Silverlight 內置的導航框架,可以節省很多代碼;對用戶體驗方面,按需加載能減少初始加載文件的大小,減少等待時間,使用導航框架可以和瀏覽器的前進、后退按鈕緊密集成,用戶體驗更佳。

但是,在 Silverlight 3 目前的版本中, Frame 控件似乎不能直接加載動態加載的 Silverlight Page , 不管是通過設置 HyperLinkButton 的 NavigateUri 屬性,還是通過調用 Frame.Navigate(Uri source) 方法,都會出現相同的異常, 看下面代碼:

var xap = "http://localhost:2704/AppSL.Web/ClientBin/TestSLApp.xap";  // LoadPackage 是加載 xap 的擴展方法  Deployment.Current.LoadPackage(xap, () => {     var uri = new Uri("/TestSLApp;component/MainPage.xaml", UriKind.Relative);     this.WidgetFrame.Navigate(uri);  });

當執行至 WidgetFrame.Navigate(uri) 時,會出現下面的異常:

Silverlight中導航框架與動態加載的原理是什么

是什么原因導致這個異常呢? 通過 Reflector 察看 PageResourceContentLoader ,發現加載 x:Class 的是這個 GetTypeFromAnyLoadedAssembly 方法:

 

這個方法只是遍歷 Deployment.Current.Part 去尋找所需要的類型,并沒有去遍歷動態加載的文件, 當然,這里也不可能去遍歷。

看到這里,終于找到異常出現的原因了,由于這個方法是私有并且是靜態的,無法進行重寫,只能通過其它途徑來解決。我想到的解決方法是,新建一個 Silverlight Page, 然后刪除對應的代碼文件,刪除 xaml 視圖的 x:Code 信息,如下圖所示:

Silverlight中導航框架與動態加載的原理是什么

***的解決方案就是, 要做一個引導的文件,這個文件必須是一個獨立的 xaml 文件,沒有代碼文件,沒有 x:Class 信息,這樣就不會被編譯成新的類型,自然可以被 Silverlight 的導航框架加載了。

看完上述內容,你們對Silverlight中導航框架與動態加載的原理是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚顺市| 泗阳县| 鹤峰县| 巢湖市| 广东省| 六盘水市| 平塘县| 南和县| 怀远县| 鹤峰县| 繁峙县| 玉溪市| 万年县| 溧水县| 奉贤区| 台北县| 遵义市| 额济纳旗| 甘洛县| 万年县| 佛坪县| 柘荣县| 隆化县| 九江市| 河北省| 长春市| 攀枝花市| 白水县| 德州市| 新津县| 徐水县| 桑植县| 南皮县| 阿拉尔市| 常熟市| 自治县| 陇西县| 绵竹市| 公安县| 鄂托克前旗| 彭阳县|