社区
WPF/Silverlight
帖子详情
silverlight加载XAP问题
renshibubushiren
2011-04-27 02:23:38
在silverlight中加载外部xap,具体加载方法就不多说了,网上一大堆。
但是遇到一个问题
在被加载的xap中,如果在App.xaml中定义了控件样式,在MainPage.xaml中使用,在加载时就会报错。
请问有遇到这样的问题吗?
可能我描述的不够明确,有不明白的,请回复
...全文
150
6
打赏
收藏
silverlight加载XAP问题
在silverlight中加载外部xap,具体加载方法就不多说了,网上一大堆。 但是遇到一个问题 在被加载的xap中,如果在App.xaml中定义了控件样式,在MainPage.xaml中使用,在加载时就会报错。 请问有遇到这样的问题吗? 可能我描述的不够明确,有不明白的,请回复
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
renshibubushiren
2011-04-28
打赏
举报
回复
请高手指点
renshibubushiren
2011-04-28
打赏
举报
回复
[Quote=引用 5 楼 dingzongyinnihao 的回复:]
你按住Ctrl+shift+B ,重新生成后,找不到????
[/Quote]
老大,是程序运行时找不到,不是编译的时候,编译是正常的,如果你没这样加载过xap,那就谢谢你帮顶了!!!
我说我行就是行
2011-04-28
打赏
举报
回复
你按住Ctrl+shift+B ,重新生成后,找不到????
renshibubushiren
2011-04-28
打赏
举报
回复
[Quote=引用 3 楼 dingzongyinnihao 的回复:]
你要在原先的项目中定义控件样式,然后在运用,最后生成,生成好了,再加载!不然,直接加载的话,肯定会报错的!(不知道我理解你的意思是否正确!)
[/Quote]
【原先的项目中】指的是哪个项目?被加载的吗?样式已经在被加载的项目中定义了,在app.xaml中,但是找不到。
我说我行就是行
2011-04-28
打赏
举报
回复
你要在原先的项目中定义控件样式,然后在运用,最后生成,生成好了,再加载!不然,直接加载的话,肯定会报错的!(不知道我理解你的意思是否正确!)
dengkz1
2011-04-27
打赏
举报
回复
我遇到的问题应该与你这出错是一样的,也没解决
修改被下载的xap的App.xaml文件里的Application_Startup方法,无论怎样改都不起作用
this.RootVisual = new DataList() //new DataList()更换无效
SL动态
加载
外部
xap
包
动态
加载
外部
xap
silverlight
,这样通过映射和服务
Silverlight
Loader
通过网上的搜索,感觉
Silverlight
Loader挺好用的,下面详细介绍一下怎么使用
Silverlight
Loader。
Silverlight
Loader的下载地址如下:http://
silverlight
loader.codeplex.com/ 其实文章并不长,只有下面红色的部分才是需要你实现的代码,这里可能不能显示颜色,可以通过以下网址查看: http://hi.baidu.com/ck436/blog/item/a736edc487d6fea58226acab.html 下面首先介绍一下
加载
的原理: 其实就是建二个项目:一个较小,用于
加载
较大的项目文件,并在
加载
过程中给用户显示
加载
进度,假设为SLLoader.
xap
;另一个为我们的具体功能实现项目,不妨假设为LoadTarget.
xap
。 客户端下载程序时,首先
加载
SLLoader.
xap
,这个过程应该是比较快的,然后由SLLoader.
xap
一边
加载
较大的LoadTarget.
xap
,一边显示进度或动画,当
加载
LoadTarget.
xap
完毕后,就调用打开LoadTarget.
xap
,至些,我们的项目已
加载
完毕。 关于该
加载
过程的详细资料,可参考如下页面: How the
Silverlight
loader works http://www.apijunkie.com/APIJunkie/blog/page/How-the-
Silverlight
-loader-works.aspx
Silverlight
Loader Getting Started Guide http://www.apijunkie.com/APIJunkie/blog/page/
Silverlight
-Loader-Getting-Started-Guide.aspx
Silverlight
Loader Class Diagram http://
silverlight
loader.codeplex.com/wikipage?title=Class%20Diagram&referringTitle=Home 网上有一篇关于实现
加载
的介绍,基本上是翻译过来的,不是很详细,文章在此: http://
silverlight
china.net/html/tips/2010/0115/588.html 下面我根据上面的几篇文章详细介绍项目的实现过程: 第一步:创建一个SLLoader.
xap
项目或在现有的SLLoader.
xap
项目中使用
Silverlight
Loader 1.在现有SLLoader.
xap
项目中使用
Silverlight
Loader:先下载
Silverlight
Loader压缩包,从下载的Release中找到
Silverlight
Loader.cs,并将其添加到SLLoader.
xap
项目中,具体实现方法:在SLLoader.
xap
项目中右键添加已有项,浏览找到
Silverlight
Loader.cs即可添加。 2.通过项目模板创建一个SLLoader.
xap
项目:将
Silverlight
Loader模板文件拷贝到VS的模板文件夹下,如My Documents\Visual Studio 2008\ProjectTemplates\Visual C#。而后就可以在新建项目时看到
Silverlight
Loader项目了。 第二步:实现ISliverlightLoader接口 1.添加对
Silverlight
Loader的引用 在App.xaml.cs中添加对命名空间
Silverlight
Loader的引用,实现代码: using
Silverlight
Loader; 在MainPage.xaml.cs中添加对命名空间
Silverlight
Loader的引用,实现代码: using
Silverlight
Loader; 2.创建动态
加载
外部数据的开始点 在App.xaml.cs中的Application_Startup事件中开始载入数据包,代码如下: private void Application_Startup(object sender, StartupEventArgs e) { //无需该默认语句 //this.RootVisual = new MainPage(); //建立
加载
页 MainPage loader = new MainPage(); //设置该
加载
页为
加载
项 this.RootVisual = loader; //建立
加载
数据包管理类,并开始
加载
目标
xap
, //该类的构造函数中的第三个参数为模拟
加载
网速, //为了模拟
加载
过程和调试,可以通过设置该参数来模拟
加载
速度,单位为Kb, //当设该参数为0时,则采用真实带宽
加载
目标
xap
。 PackageDownloadManager pdm = new PackageDownloadManager(loader, e.InitParams, 0); } 3.在MainPage.xaml.cs中实现ISliverlightLoader接口 有如下几个I
Silverlight
Loader接口需要添加,也就是在下面几接口中实现
加载
进度的交互显示: // 初始化
加载
须
加载
的数据包列表 void initCallback(List
packageSourceList); // 回调函数,用于标识开始
加载
数据包 void downloadStartCallback(Uri packageSource); // 回调函数,用于标识
加载
进度发生变化 void downloadProgressCallback(Uri packageSource, DownloadProgressEventArgs eventArgs); // 回调函数,用于标识
加载
数据包结束 void downloadCompleteCallback(Uri packageSource, DownloadCompleteEventArgs eventArgs); MainPage.xaml.cs中的实现代码如下,我现在把MainPage.xaml.cs的代码全部粘上,红色部分为所添加代码: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using
Silverlight
Loader; namespace SLLoader { //注意此处的类继承:
Silverlight
Loader.I
Silverlight
Loader public partial class MainPage : UserControl,
Silverlight
Loader.I
Silverlight
Loader { public MainPage() { InitializeComponent(); } #region I
Silverlight
Loader Members //初始化
加载
须
加载
的数据包列表 void I
Silverlight
Loader.initCallback(System.Collections.Generic.List
packageSourceList) { } //回调函数,用于标识开始
加载
数据包 void I
Silverlight
Loader.downloadStartCallback(Uri packageSource) { LoadProgress.Text = "
加载
初始化..."; } //回调函数,用于标识
加载
进度发生变化 void I
Silverlight
Loader.downloadProgressCallback(Uri packageSource, DownloadProgressEventArgs eventArgs) { float offset = ((float)eventArgs.ProgressPercentage * 4 / 100f) * 1000; TimeSpan ts = new TimeSpan(0, 0, 0, 0, (int)offset); //显示
加载
进度,例如下面二行代码中LoadProgress为一个Textblock,LoadProgressBar为一个进度条,则可以使用下面语句显示进度 LoadProgress.Text = eventArgs.ProgressPercentage.ToString() + "%"; LoadProgressBar.Value = eventArgs.ProgressPercentage; } //回调函数,用于标识
加载
数据包结束 void I
Silverlight
Loader.downloadCompleteCallback(Uri packageSource, DownloadCompleteEventArgs eventArgs) { LoadProgress.Text = "
加载
完成";
Xap
Util.setCurrent
Xap
File(packageSource); } #endregion } } 第三步:在HTML页面或asp:
Silverlight
控件设置初始载入界面与载入目标 该步就是在HTML或asp:
Silverlight
控件中加入对SLLoader.
xap
的调用,并将LoadTarget.
xap
的名字做为参数传递给SLLoader.
xap
,以便
加载
, 可以看出,在建立整个项目的过程中,SLLoader.
xap
和LoadTarget.
xap
并不需要打交道,只在HHTML或asp:
Silverlight
控件设置中才把二者联系起来。 1.HTML中的设置方法:
注意SLLoader.
xap
和LoadTarget.
xap
的位置,此时把HTML文件、SLLoader.
xap
和LoadTarget.
xap
放在同一目录下即可实现
加载
。 2.在asp:
Silverlight
控件中设置的方法
Silverlight ID="Xaml1" runat="server" Source="~/SLLoader.
xap
" MinimumVersion="2.0.31005.0" Width="550" Height="400" InitParameters="LoaderSourceList=LoadTarget.
xap
" /> 与在HTML中通过Object对象设置的原理相同。 3.如果此时编译SLLoader.
xap
项目,可能通不过,提示缺少对System.Runtime.Serialization.Json的引用, 为解决此
问题
,需要添加如下三个引用,参考文章:http://www.cnblogs.com/Blackie/archive/2009/07/09/1520080.html 1.System.Runtime.Serialization 2.System.ServiceModel 3.System.ServiceModel.Web 至此,一个
加载
功能制作完毕。 注意事项: (1)App和MailPage都需要添加对命名空间
Silverlight
Loader的引用; (2)PackageDownloadManager类构造函数中的第三个参数需要更改,看前面的代码注释,在此处将参数改为一个较小的值,即可减小
加载
速度,以便查看
加载
效果; (3)需要添加以下三个引用,只有同时添加,才能正确引用System.Runtime.Serialization.Json: 1.System.Runtime.Serialization 2.System.ServiceModel 3.System.ServiceModel.Web 目前已知的
问题
: 实现该
加载
功能的目的就是不想显示
Silverlight
默认的那个蓝色整圆圆的
加载
动画, 但如果网速过慢,还是会显示
加载
SLLoader.
xap
的动画,另外SLLoader.
xap
加载
完LoadTarget.
xap
后,打开LoadTarget.
xap
的过程中也可能会出现默认的那个
加载
动画,虽然只是一瞬间,不知道该怎么屏蔽这个默认的动画,请大家支招。 还请大家教我实现屏蔽默认
加载
动画的方法,我的邮箱:ck436#126.com,把#改为@
Silverlight
Audio Player源码
Silverlight
Audio Player源码 概览
Silverlight
的音频播放器是一个简单的音频播放器,可用于播放一个或多个音频文件使用。它目前支持两种风格的播放器。 安装 您需要AudioPlayer.
xap
文件,并选择一个XML播放列表文件。一旦你的,你可以
加载
相同的方式
Silverlight
的应用程序中任何其他。记得设置适当的大小, 并通过在Initparams(见下文)的MP3播放文件的URL或网址。按照惯例,喜欢的Visual Studio
XAP
文件的ClientBin在一个文件夹中。您不必这样做,如果你不这样做,您将需要调整 从下面的相对路径(即没有..需要的例子显示在您的网址\)。 要使用单文件播放器,只需通过以下初始化params到您的
Silverlight
对象。单人应该是大小295像素宽和30像素高。 使用多文件播放器 多玩家仍然是一个进展中的工作。要启动与多个文件播放器,你需要指向一个播放它。阿播放列表 一个XML文件,其中包含每个轨道你想播放的网址,艺术家和标题。
Prismv4.exe
Prism是微软针对WPF,
Silverlight
以及Windows Phone推出的一套框架,可以帮助开发着轻松解耦自己的项目。Prism也有一些AOP的元素在里面,比如日志记录,但是Prism的主旨还是模块化程序。Prism提供了很多种手段进行注入,模块的动态
加载
,UI组合,命令系统,MVVM模式扩展等等。 Prism与容器的关系不得不说一下,Prism是基于依赖注入容器的,目前Prism4提供了两种容器支持,一种是Unity,一种MEF,两种容器的功能相似,但是还是有区别的,Unity可以与EntLib结合,实现AOP功能,我觉得这个很诱人,而MEF嵌入在.net框架里,并且可以自动发现程序集,下载
XAP
等等功能。
Silverlight
加载
xap
后通过反射相互调用方法及元素
在一个
silverlight
工程里
加载
另一个
xap
之前我已经有写过,不过如果
加载
后相互调用就没有写到,所以补充说明一下
加载
后两个
silverlight
中相互调用方法和元素的使用。 注意:请先参考本网站的《
silverlight
动态
加载
xap
》文章,再结合以下内容使用! 1.在主程序里调用
加载
的
xap
里的方法: a.在被
加载
的
silverlight
里添加一个方法提供给调用: 1: pub...
WPF/Silverlight
8,735
社区成员
12,029
社区内容
发帖
与我相关
我的任务
WPF/Silverlight
WPF/Silverlight相关讨论
复制链接
扫一扫
分享
社区描述
WPF/Silverlight相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章