Silverlight 资源的使用

我们在Silverlight 项目中,新加一个文件,比如一个图片文件,这个文件的属性会有下面2个选项,这两个选项决定了这个图片资源如何存储,如何使用。

先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项:

他们都是在程序编译或者部署时,判断此资源文件是否要同步用的。

Do not copy 不做数据同步 Copy always 每次都会被同步过去 Copy if newer 当有新版本存在时,才会被同步过去

Build Action 属性则复杂多了, 下面是VS2010中, Silverlight 4 项目资源文件的Build Action 属性截图。

注意,上面罗列了一些不适合资源文件的 Build Action 属性,在使用资源文件时,可以忽略这些。

None 资源既不会被集成到程序集内,也不会打包到xap包中。
不过我们可以通过设置CopyToOutputDirectory选项让其自动拷贝到xap包所在目录。

这种情况下,访问这个图片的相对Uri需要以"/"开始。

适用场景:

在大多数情况下,我们希望把video/audio文件放到xap的外面,因为这种文件一般都比较大,会影响silverlight应用的加载,而且一般的视频音频文件都是压缩格式的,放到xap中也不会起到减少他们文件大小的作用。
类似图片视频这种资源文件生成操作为None时和他们没有被添加到项目里是一样的,都可以用绝对Uri进行引用。

Compile 不适合用于资源文件。

类文件要用"Compile"生成操作,就是指项目里.cs或.vb文件。 Content 资源会被打包在Xap包
里面。

这种情况下,访问这个图片的相对Uri需要以"/"开始。

在这种方式下,如果没有在xap中找到图片文件,
那么silverlight会自动从当前xap应用所在的文件夹下来找所需图片文件,

如果还没有找到那么就触发ImageFailed事件,

这种方式比较适合在多个程序集引用相同文件时采用。 Embedded Resource

这种方式会把文件嵌入到程序集中,silverlight无法通过Uri引用在xaml和c#里对这个文件进行使用,微软不建议在silverlight采用这种方式在程序集里嵌入资源。
如果有这种需求可以用
Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(string path)相关的方法得到文件的stream引用。

ApplicationDefinition

silverlight程序的入口xaml文件(默认就是App.xaml)应该设置为这个"应用定义"。其他文件都不适合用这个。

Page 不适合用于资源文件。


有的用户控件,页面和子窗体(usercontrol/page/childwindow)的xaml文件应该采用的生成操作。

如果改为别的方式那么会导致后台对应的代码文件无法链接到这个xaml文件。采用"
Page" build action时xaml里的错误会导致工程无法正确生成。 CodeAnalysisDictionary 代码分析使用,Silverlight中可以忽略 Resource 资源会被打包在程序集内部。

选择这种生成方式后,该资源文件会被嵌入到该应用的程序集中,就是说打开生成的xap是看不到这个文件的。

可以用相对于当前的XAML文件的相对Uri访问,
如<Image Source="silverlight.png"/>
或是<Image Source="./silverlight.png"/>,

在子文件夹里的可以用
<Image Source=”./images/sl.jpg”/>访问到。

最保险的方式是采用特有的程序集资源URI访问,格式为
<Image Source="/{assemblyShortName};component/Foo.jpg"/>,

这种方式还可以引用到xap中的其他程序集中的图片。

这种生成方式的系统资源可以直接用Application.GetResourceStream(uri).Stream在代码里来得到。

SplashScreen

"SplashScreen"是这个选项是WPF的启动画面使用的。  silverlight启动加载画面是用的其他方式实现的,所以在silverlight里不要用这个方式。

EntityDeploy 这个是EntityFramework采用的生成方式,在silverlight里是没用。

参考资料:

分析silverlight里的URI引用资源文件的各种情况

http://bbs.blueidea.com/viewthread.php?tid=2941697

Silverlight图片相对路径的设置

http://www.cnblogs.com/yangfan/archive/2009/12/14/1623647.html

关于Silverlight资源文件(如:图片)的放置位置及其引用(相对路径)

http://www.cnblogs.com/star250/archive/2009/10/15/1583665.html

Silverlight资源文件

http://msdn.microsoft.com/zh-cn/library/cc296240(VS.95).aspx

图片等资源的引用路径问题

http://www.cnblogs.com/kevinyang/archive/2008/11/16/1334712.html

时间: 2024-11-13 08:51:34

Silverlight 资源的使用的相关文章

一起谈.NET技术,Silverlight 资源的使用

我们在Silverlight 项目中,新加一个文件,比如一个图片文件,这个文件的属性会有下面2个选项,这两个选项决定了这个图片资源如何存储,如何使用. 先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项: 他们都是在程序编译或者部署时,判断此资源文件是否要同步用的. Do not copy 不做数据同步 Copy always 每次都会被同步过去 Copy if newer 当有新版本存在时,才会被同步过去 Build Action 属性则复

Silverlight网页游戏设计思想(WebGame Essence):(一)动态资源

即开即玩是网页游戏相比传统客户端游戏的最大优势.如果说在每台电脑安装上G的客户端是一种资源浪费及时间污染:那么 Silverlight作为RIA界的新宠儿,在继承祖辈优秀血统的前提下拥有更加卓越的性能及更为曼妙的动态表现,势将引领网络未来世界进入那 令人神往的低碳空间. 笔者学习Silverlight开发1年有余,在写第一部Silverlight游戏系列教程时为了尽快的实现目标而将所有素材资源打包进XAP中.与其 他Silverlight初学者一样,这或许是我们所必须会经历的一个过程.QXGam

ArcGIS API for Silverlight代码中使用Template模板

原文:ArcGIS API for Silverlight代码中使用Template模板        在项目开发中,会遇到点选中聚焦闪烁效果,但是因为在使用Symbol的时候,会设置一定的OffSetX和OffSetY,所以聚焦闪烁的时候,有些情况下,会出现闪烁点的位置和Symbol的位置不重叠现象,下面的方法就是解决这个问题的. 1.在Silverlight项目中新建一个文件夹Template,新建一个DefaultMarkerSymbol.xaml的Silverlight资源字典文件,如下

一起谈.NET技术,Expression Blend实例中文教程(2) - 界面快速入门

上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Blend前,首先需要进行Silverlight的开发环境搭建,在银光中国网(SilverlightChina.Net)有篇"轻松建立Silverlight开发环境",其中列出了建立Silverlight开发环境的几个步骤,另外,我在过去发布过一篇"Silverlight开发工具集合&

Silverlight 报调试资源字符串不可用。

问题描述 Silverlight 报调试资源字符串不可用. 请教大家一个问题,在服务器上发布了两个 sl 的项目p1和p2,有台A机子能访问p1,不能访问p2,一直显示100% p2 在其他机子上可以访问.p2在A机子上通过开发人员选项调试查看得知,错误如下:throw new Error(""Unhandled Error in Silverlight Application 错误 0x1A88.调试资源字符串不可用. 网上说启用匿名登录,启用了,问题依旧 A机子之前是可以访问p2的

Silverlight中无法设置卫星程序集为中立资源程序集

  熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序集.因此显式指定一个中立资源程序集很重要. 在每个工程的Properties文件夹下都有一个AssemblyInfo.cs文件,打开此文件,添加以下代码: [assembly: NeutralResourcesLanguageAttribute("en", UltimateResour

Silverlight 3 资源整理

Silverlight 3 资源整理     Silverlight 3 Microsoft Silverlight 3 Software Development Kit Silverlight 3 Tools   Expression Blend 3 + SketchFlow RC Deep Zoom Composer Silverlight Toolkit  Microsoft .NET Services White Papers (July 2009 CTP) Data-Driven RI

Silverlight学习笔记:资源的位置

    在 Web 项目中,我们免不了使用一些诸如图片.音频.视频.字体之类的在我们的程序中非可执行的数据文件,习惯称之为资源文件.在Silverlight中,使用这些资源文件的方法有很多,比如官方的说法:   作为应用程序包中的单个文件. 作为按需检索的单个文件. 作为嵌入应用程序包的程序集中的文件. 作为嵌入外部库包的程序集中的文件. 作为程序集中嵌入的按需检索的文件.       对于这个说法,我觉得很晦涩,所以亲自实践了一下.对于 Silverlight 来说,我们可以将资源发布到 xa

WPF and Silverlight学习笔记(十六):WPF资源(Resource)(1)

一.什么是资源 通常使用 WPF 资源作为重用通常定义的对象和值的 简单方法.例如定义一种可以复用的单色的Brush对象,按钮的背景及矩形的填 充颜色均使用此Brush: 1: <Window x:Class="WPFResource.WinBasicResource" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation& quot; 3: xmlns:x="http: