開源項目中的一個 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 值, 否則也可能會出現問題。