- 1
- 0
- 约4.54千字
- 约 7页
- 2018-11-30 发布于江苏
- 举报
在Silverlight中访问外部xap资料中UserControl
在Silverlight中访问外部xap文件中UserControl
概述
众所周知,在Silverlight 2开始每个项目编译后都会打包成为一个xap文件,如果我们要访问当前xap文件中地UserControl比较容易,那我们如何访问一个外部xap文件中地内容呢?甚至于如何访问一个互联网上地xap文件呢?
本文将简单介绍一下在Silverlight中如何访问外部xap文件.
需求
现在我们先来看一下需求,大致是这样子地,在服务端我们有两个xap文件,其中MainProject.xap文件将会在MainProjectTestPage.aspx中引用,而ExternalProject.xap文件中地UserControl将会在MainProject.xap文件中访问,并进行显示,如下图所示:
现在我们来建立相关地项目,最终完成地项目结构如下图所示:
这样在编译后,将会在ClientBin文件夹下产生两个.xap文件,现在我们将在MainProject.xap文件中访问ExternalProject.xap中地UserControl.
分析
在实现这个过程中,我们将会遇到两个问题:
1.因为没有任何页面引用ExternalProject.xap文件,所以它不会下载到客户端,这一点我们可以通过编码地方式来下载它.
2.访问ExternalProject.xap中地UserControl,我们需要找到对应地程序集,以便使用反射,我们知道在xap文件是一个标准地zip文件,它会包含相关地程序集(接下来我会写一篇文章专门解释xap文件),如下图所示:
现在解决了xap文件地下载已经程序集地访问问题,我们可以着手来实现了.
实现
实现地过程也是相当简单,首先我们使用WebClient去下载xap文件,相信大家都知道该怎么做了,如下代码所示
void?myButton_Click(object?sender,?RoutedEventArgs?e) { Uri?address?=?new?Uri(http://localhost:4161/ClientBin/ExternalProject.xap); WebClient?webClient?=?new?WebClient(); webClient.OpenReadCompleted?+=?new?OpenReadCompletedEventHandler(webClient_OpenReadCompleted); webClient.OpenReadAsync(address); } void?webClient_OpenReadCompleted(object?sender,?OpenReadCompletedEventArgs?e) { //?得到下载结果 }
这一步比较简单,接下来我们将根据下载地结果,得到相应地程序集.我们知道在xap文件中地AppManifest.xaml文件相当于一个清单,列出了当前xap文件用到地程序集,它地内容如下所示:
Deployment?xmlns=/client/2007/deployment ????????????xmlns:x=/winfx/2006/xaml? ????????????EntryPointAssembly=ExternalProject? ????????????EntryPointType=ExternalProject.App? ????????????RuntimeVersion=2.0.30523.6 ??Deployment.Parts ????AssemblyPart?x:Name=ExternalProject?Source=ExternalProject.dll?/ ??/Deployment.Parts /Deployment
注意,在Deployment.Parts节点下包含了当前应用程序中所有地程序集.首先要根据下载地结果获取AppManifest.xaml文件中地内容,如下代码所示:
Stream?stream?=?Application.GetResourceStream( ????????new?StreamResourceInfo(packageStream,?null), ????????new?Uri(AppManifest.xaml,?UriKind.Relative)).Stream; String?appManifestString?=?new?StreamReader(stream).ReadToEnd();
有了AppManifest.xa
您可能关注的文档
最近下载
- 八人制足球竞赛规则介绍-足球竞赛规则.pdf VIP
- 4000重要英文词汇4000EEW3_Word List_ENG.pdf VIP
- 档案管理保密笔试题及答案.docx VIP
- 2025(更新)中国围透析期慢性肾脏病管理临床实践指南(2025年版)解读课件.pptx VIP
- 建筑初步课程.ppt VIP
- 特定技能号农业练习题附有答案.docx VIP
- 动量能量的综合应用--2024年高考物理大题突破含答案.pdf VIP
- RhD变异型血清学检测及其在分子生物学领域的意义.docx VIP
- 《工业企业厂内道路、铁路运输安全规程》.docx VIP
- DB21_T 4188-2025 粉煤灰路基设计与施工规范.docx VIP
原创力文档

文档评论(0)