惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
博客园 - 三生石上(FineUI控件)
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Schneier on Security
Vercel News
Vercel News
A
Arctic Wolf
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网
AWS News Blog
AWS News Blog
V
Visual Studio Blog
Cyberwarzone
Cyberwarzone
爱范儿
爱范儿
博客园 - 司徒正美
NISL@THU
NISL@THU
N
News | PayPal Newsroom
N
News and Events Feed by Topic
Scott Helme
Scott Helme
I
InfoQ
Project Zero
Project Zero
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Tenable Blog
Help Net Security
Help Net Security
D
Docker
IT之家
IT之家
人人都是产品经理
人人都是产品经理
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
PCI Perspectives
PCI Perspectives
aimingoo的专栏
aimingoo的专栏
博客园 - Franky
G
GRAHAM CLULEY
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
L
LINUX DO - 热门话题
J
Java Code Geeks
C
Cyber Attacks, Cyber Crime and Cyber Security
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
H
Hacker News: Front Page
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
SecWiki News
SecWiki News
T
Tailwind CSS Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
罗磊的独立博客

博客园 - 张志敏

System.Net.Http for Silverlight 通过网页进行 iOS 应用内部分发 使用 Intel HAXM 为 Android 模拟器加速,媲美真机 Mono for Android 实现高效的导航 Activity 生命周期及其栈管理方式 我的第一个 Mono for Android 应用 谈谈 INotifyPropertyChanged 的实现 在 Silverlight 5 项目中使用 async/await Task 编程中的异常处理 NHibernate 关系映射中的 Formula SQLite 常用 SQL 让 VS 编译 MonoTouch 项目源文件不再出错 MonoTouch绑定CocoaTouch类库 升级 Xcode 4.3 后找不到 xcodebuild 的解决方法 iOS 静态类库项目的建立与使用 从源代码编译里程碑的 ICS ROM IIS 7.5 下应用程序池的预定义账户 Web API 依赖注入与扩展 ASP.NET Web API 简介
开源一个 Sliverlight 导航框架
张志敏 · 2012-06-08 · via 博客园 - 张志敏

开源项目中的一个 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 值, 否则也可能会出现问题。