文章目錄
開源項目中的一個 Silverlight 導航架構, 原始碼已經發布到 GitHub, 地址為 https://github.com/beginor/AssemblyNavigation 。
特點 按需載入 Silverlight 組件
與 SL 內建實現了真正意義的按需載入, 主程式可以非常小, 最小不超過 200 KB, 只有當點選連結之後, 才會去服務端下載
對應的組件, 每個組件檔案只會下載一次。 如果要下載的組件引用了其它第三方的組件, 也會自動下載第三方組件, 下載第這些
時會自動過濾掉重複的組件。
幾乎零配置
使用這個導航架構幾乎不需要在用戶端或服務端做任何配置, 整個載入過程是自動完成的, 你需要寫的只是導航的功能表項目。
使用方法 主程式
1. 添加對 AssemblyNavigation、 System.Windows.Controls.Navigation 的引用至項目;
2. 在首頁面的 xaml 代碼添加下面的 xmlns 引用:
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:asmNav="clr-namespace:Beginor.AssemblyNavigation;assembly=Beginor.AssemblyNavigation"
3. 添加 Frame 控制項並設定 ContentLoader, 代碼如下:
<sdk:Frame Name="MainFrame" Grid.Row="1" Source="MainApp.WelcomePage,MainApp"> <sdk:Frame.ContentLoader> <asmNav:AssemblyNavigationContentLoader /> </sdk:Frame.ContentLoader> </sdk:Frame>
模組
每個模組需要添加對 System.Windows.Controls.Navigation 的引用, 至少要有一個頁面(否則就不是模組了), 這個
頁面需要繼承自 System.Windows.Controls.Page 類。
導航連結地址格式
導航地址的連結地址格式為要顯示的模組的完整的類型名稱, 例如:
<StackPanel Orientation="Horizontal"> <HyperlinkButton Content="Welcome Page" NavigateUri="MainApp.WelcomePage,MainApp"/> <HyperlinkButton Content="Chart Page" NavigateUri="ChartModule.ChartPage,ChartModule"/> <HyperlinkButton Content="Map Page" NavigateUri="MapModule.MapPage,MapModule"/> <HyperlinkButton Content="Grid Page" NavigateUri="GridModule.GridPage,GridModule"/> </StackPanel>
如果還不夠清楚, 可以從 GitHub 網站項目下載這個項目, 有一個完整的測試程式。
注意問題
- 如果模組引用的第三方組件只在 xaml 中使用, 則必須添加 x:Name 屬性, 否則可能會出現找不到這個第三方組件的問題;
- 如果模組的 xaml 中引用了 clrnamespace , 則必須指定 assembly 值, 否則也可能會出現問題。