分享好友 最新动态首页 最新动态分类 切换频道
在哪个网站做流程图比较好看/免费外链发布平台在线
2024-12-26 10:21

Silverlight中的Application类

    本文对应于Silverlight 2帮助文档中"Application Model"章节,微软的介绍顺序或许着眼于宏观架构,而本文则属于问题导向型的介绍。在实际中遇到初始化化页面加载其他xap中的应用程序调用资源文件等问题,在解决过程,不断的参考阅读了这部分内容。尽管单一逐个地解决了问题,但重新组织,并整理下自己的思路,理解将会更加深刻。

    Application类封装了一个Silverlight应用程序(单例模式,它主要表示应用程序代码在 Silverlight 插件生命周期中的入口点(插件激活过程可参考下图)。提供若干服务:应用程序生存期管理、 应用程序资源文件加载、 未处理的异常处理和Web 宿主集成等。"Application Service"

    Application类有三个事件成员StartupExitUnhandledException。在新创建Silverlight应用程序时,在自动生成的App.xaml.cs会看到相应事件的处理方法。ExitUnhandledExeption可查看帮助文档,暂时只关注Startup事件。

    Startup用来在应用程序启动时进行一些初始化操作,最基本的指定RootVisual属性来显示主页面。其次就是检索传进来的参数StartupEventArgs 对象的 InitParams 属性,进行相应的处理,比如如何确定不同的起始主页面,参考TerryLee的《在Silverlight 2应用程序中切换用户控件》。还可以通过HtmlDocument.QueryString从宿主网页中检索URL参数,通过IsolatedStorageSettings类检索先前应用程序的会话数据等。

    此外Startup中也可以检索其他资源,比如用WebClinet等异步下载其他资源文件或程序集。若文件为Zipxap,则要利用到Application.GetResourceStream方法。若文件为程序集,则要创建一个新的AssemblyPart对象,并调用它的Load方法来进行加载。当然,调用其他资源文件,也可不必Startup中进行。比如可以在某页面中点击按钮来触发事件,调用其他xap中的某个程序集。

    理解调用外部xap中程序集的过程,首先需要了解"Application Structure",查看并理解AppManifest.xaml文件。需要注意的是beta2中用Deployment对象来获取AppManifest.xaml文件中的元素已不再有效,可以利用Linq方式读取。可参考《Dynamic Load & Invoke Other Xap For SilverLight 2.0,内容是中文的,这篇文章有改进之处,比如把这个过程抽象为一个方法,可供以后直接调用。

 

    Application类处理上面提到的Application.GetResourceStream方法外,还有一个常见的方法就是Application.LoadComponent。查看page等页面构造函数中InitializeComponent()方法即可看到它的出现。该方法也常用来调用"Build Action"为"Page"的xaml文件,参考《动态加载XAML文件》。

    Application还有其他方法,不再逐一介绍。最后看一下Application的属性CurrentHostResourceRootVisual

    Application.Current用来提供对当前应用程序的 Application 实例的共享访问。由于一般系统自动生成的是从Appliction继承的App,因此常见形式为App currentApp = (App)Application.Current;

    Host,获取有关 Silverlight 应用程序的主机的各种详细信息。比如txtBlock.Text = App.Current.Host.Background;

    Application.Resource常出现在App.xaml文件中,指应用于整个应用程序的资源。相对的就是单一页面域的资源和inline式资源。

RootVisual就来获取或指定应用程序的起始页面。

 

最新文章
AI如何落地生花?中国电信的答案来了!
飞象网原创(高靖宇/文)人工智能(AI)作为数字化转型的核心动力,正在以前所未有的速度重塑各个行业,尤其是推动了通信行业与其他领域的深度融合。AI赋能下,通信行业从传统的“连接服务提供者”转变为“智能解决方案的引领者”,在AI浪
ChatGPT掀起技术狂潮 “顶流”之下,看人工智能喜与忧
  目前,ChatGPT还没有通过图灵测试的评估。其实,迄今为止,还没有人工智能模型能真正通过图灵测试。  去年11月,美国人工智能研究公司OpenAI发布了一款名为ChatGPT的聊天机器人,其在推出后的几周内就风靡全球,甚至引发了一场新的全
Java最全40K+Star!Mall电商实战项目开源,附源码、教程合集,java面试资料推荐
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努
Android保存用户名和密码
【转自  http://www.cnblogs.com/dennytao/p/5351861.html】 我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地
GameMaker Studio开发:打包与跨平台发布_18.测试与调试打包后的游戏
18. 测试与调试打包后的游戏 在完成游戏的开发并进行打包后,测试和调试是确保游戏在不同平台上的稳定性和性能的重要步骤。本节将详细介绍如何进行测试与调试,以确保您的游戏能够在各种设备和操作系统上顺利运行。 18.1 测试
AI PPT工具推荐:让创作更智能,工作更高效!
随着AI技术的发展,越来越多的AI工具正在改变我们的工作方式,AI生成PPT就是其中之一!你是否厌倦了手动设计PPT的繁琐?AI可以帮你快速生成内容,提升创意,节省时间。今天,我们就来盘点几款热
2024华为云开源开发者论坛召开,20+技术大咖解读开源生态发展
12月7日,2024华为云开源开发者论坛在上海隆重举行,此次论坛以“开放创新,释放云上数字生产力”为主题,汇聚了来自全球的开源生态合作伙伴、企业、个人与高校开发者,围绕“开源生态前景剖析”,“开源技术解读”,“开源开发者支持与实
2024十大变态游戏盒子排行榜 热门变态手游游戏平台大全
,在这个充满无限可能的游戏世界里,变态游戏盒子成为了玩家们寻找乐趣、释放压力的重要平台。它们不仅提供了丰富多样的游戏选择,更以超值的游戏福利回馈玩家,让玩家们在享受游戏的同时,也能感受到满满的幸福与快乐。今天,小编就来为大
2022年有哪些国际性大会?
2022年有会议名称2022 ASCO胃场(G)癌症研讨会,时间:2022年1月22日地点:Moscone West,San Francisco,ASCO GI会议旨在为胃场道肿瘤相关的研究者、医生和护理人员提供专业的教育内容,为期三天的会议包含了食道,胃,胰腺,小肠和肝道,结
相关文章
推荐文章
发表评论
0评