`
lovnet
  • 浏览: 6883151 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Silverlight 资源的使用

阅读更多

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

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

image

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

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

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

image

注意,上面罗列了一些不适合资源文件的 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访问,

或是,

在子文件夹里的可以用
访问到。

最保险的方式是采用特有的程序集资源URI访问,格式为

这种方式还可以引用到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

分享到:
评论

相关推荐

    Silverlight资源字典

    在Silverlight中,资源字典(ResourceDictionary)是一...总的来说,Silverlight资源字典是UI设计和开发的重要组成部分,它促进了代码的复用,简化了样式和模板的管理,同时也为应用程序的全球化和动态更新提供了便利。

    silverlight多语言的实现

    在Silverlight中,我们可以使用ResourceDictionary来存储不同语言的文本资源。创建一个或多个.resx文件,如`Resources.en-US.resx`(英语)和`Resources.fr-FR.resx`(法语),每个文件包含一组键值对,键是标识符,...

    Silverlight Spy.rar

    3. **资源查看**:显示应用程序使用的资源,如样式、模板、图像等,方便资源管理和优化。 4. **图形和动画调试**:查看和控制图形渲染和动画,确保视觉效果的正确性。 5. **事件追踪**:记录并显示UI事件的触发...

    silverlight资源集

    综上所述,"silverlight资源集"中的内容涵盖了Silverlight开发的各个方面,包括开发环境的搭建、XAML语言的学习、数据绑定、UI设计、多媒体处理、通信机制、部署策略以及安全性等。对于想要深入了解和学习...

    silverlight

    10. **编程模型**:Silverlight使用C#或VB.NET作为主要的编程语言,基于.NET Framework的子集,理解C#的基础语法和面向对象的概念是必要的。 11. **Silverlight应用生命周期**:了解Silverlight应用从加载到卸载的...

    silverlight视频聊天Demo

    总之,Silverlight视频聊天Demo是一个综合性的学习资源,它涵盖了媒体处理、网络通信、用户交互等多个方面。对于初学者来说,通过研究这个Demo,不仅可以了解Silverlight的基础用法,还能深入理解实时音视频聊天应用...

    Silverlight 2 Toolkit July 2009

    以下各节说明如何使用 Silverlight 生成应用程序: Silverlight 的 .NET Framework 类库 Silverlight 概述 Silverlight 入门 应用程序和编程模型 布局、文本和输入 控件 图形、动画和媒体 XAML 将 ...

    Silverlight 主题变色 源码

    在本文中,我们将深入探讨如何使用Silverlight技术来实现网站主题的动态变色效果,这是一种在Web应用中为用户提供个性化体验的酷炫功能。Silverlight是Microsoft推出的一种强大的富互联网应用程序(RIA)开发平台,...

    selenium silverlight 测试接口

    Selenium 是一个强大的开源自动化测试框架,用于网页应用的测试。...通过这些资源,开发者和测试人员可以学习如何集成和利用Selenium Silverlight测试接口,以便更有效地进行Silverlight应用的自动化测试。

    解决silverlight无法卸载的方法

    如果在使用windows update更新时 发现某个更新总是安装失败 并且错误代码是643 那么通常都是由于该更新所对应的组件损坏 导致该更新无法安装成功 要解决这个问题 通常都需要将该组件卸载之后重新安装来进行修复 如果...

    silverLight的使用,初学者学习

    对于初学者来说,掌握Silverlight的基础知识和使用方法,可以为Web开发打开一扇新的大门。下面将详细介绍Silverlight的相关知识点。 **一、Silverlight简介** Silverlight是一种RIA(Rich Internet Application)...

    silverlight使用数据模板自定义数据显示

    在Silverlight 3.0中,我们可以使用`Binding`类来实现这一功能。例如,我们可以在XAML中声明一个控件,并将其`DataContext`属性设置为我们想要绑定的数据对象。接着,我们可以使用`DataTemplate`来定义这个数据对象...

    在silverlight中使用OpenFileDialog浏览本_地图.

    在探讨如何在Silverlight中使用OpenFileDialog浏览本地图片这一主题时,我们首先需要理解Silverlight的基本概念以及OpenFileDialog的功能和作用。Silverlight是Microsoft推出的一款跨浏览器、跨平台的插件,它允许...

    超强SilverLight案例体验

    在"SilverLightTaTung"这个压缩包中,可能包含了示例代码、项目文件、教程文档等资源,这些都是为了帮助开发者更好地理解和实践SilverLight的用法。通过深入研究这些文件,我们可以学习到如何从零开始构建一个完整的...

    Silverlight5_Developer--“需要安装最新的silverlight Developer运行时”解决办法

    解决这个问题,可以先搜索我的资源,安装第一个程序:Silverlight5--“需要安装最新的silverlight Developer运行时”解决办法”,然后安装第二个程序(本资源的程序),即可解决问题,亲测。 希望大家多多给这个资源...

    Silverlight Toolkit 下载

    然而,对于那些仍使用Silverlight的遗留系统,Silverlight Toolkit仍然是一项宝贵的资源,帮助维持和更新这些系统。 总之,Silverlight Toolkit是Silverlight开发者的重要资源,提供了一系列强大的控件和工具,极大...

Global site tag (gtag.js) - Google Analytics