在哪个网站做流程图比较好看/免费外链发布平台在线

   日期:2024-12-26    作者:wtee888 移动:http://mip.riyuangf.com/mobile/quote/36487.html

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就来获取或指定应用程序的起始页面。

 


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号