Silverlight2 现在支持的Image格式有jpg和png,部分png编码也不支持,同时有些png在xaml的design预览中不可见,但运行时可见。请看XAML markup中两行代码的异同:
<StackPanel Background="White" Orientation="Vertical">
        <Image x:Name="blue" Source="/images/blue.png" Stretch="None"/>
        <Image x:Name="green" Source="images/green.png" Stretch="None" />
</StackPanel>

反斜杠forward-slash?有没有虾米区别呢?如图所示,名称为Resource测试示例解决方案资源管理器以及运行效果:以反斜杠开头的blue图片需要放在ClientBin目录下的相应文件夹里;不以反斜杠开头的green图片应该放在Resource目录下的相应文件夹里。这样才可正确引用,否则会发生ImageError。

为什么?两者都是相对路径,到底反斜杠带来了什么区别呢?反斜杠开头的相对路径,代表的相对位置是应用程序运行的根目录,即.xap压缩包内,若在这其中寻找不到要引用的文件,则相对路径的回退机制(fallback mechanism )自动在在.xap所在的目录,本例即为ClientBin目录中寻找加以引用。两个位置都没有,才会发生错误。不以"/"开头,则代表的相对位置是引用该图片的XAML文件所在的目录,本例即page.xaml文件所在的Resource目录。

那么究竟选择哪种方式呢?把xap文件重命名为zip文件,解压之,再用reflector反编译其中的dll文件,发现其包含了green图片,却没有blue图片。其实也很明显,blue所在的images文件夹与.xap同级,自然不会包含在内。由此可知,不以反斜杠开头的green图片嵌入到Silverlight程序中的xap文件直接下载到客户端,而blue图片则按需索取(on-demand),当显示时再去下载。当数据量较大时,不以反斜杠开头的方式加载程序的时间就过长,用户体验不好,以"/"开头自然就无此无虑,不过以反斜杠开头的话,在xaml中设计预览看不到,只有程序运行才可以看到。(若为了预览,可先从ClienBin那里复制一份放在page.xaml同级目录下供设计使用,程序发布时予以删除。)
        
除了在XAML中直接确定Image的Source URI,当然也可以在code-behind中确定,此时反斜杠的用法和XAML中相通。
C#:Image img = new Image();
img.Source = new BitmapImage(new Uri("test.jpg", UriKind.Relative));      //page.xaml所在目录下
//img.Source = new BitmapImage(new Uri("/test.jpg", UriKind.Relative)); //.xap所在目录下

话说要是使用诸如http://www.liongg.net/test.jpg之类绝对URI就没反斜杠什么事了。在代码中还可以利用Application.Current.Host.Source.AbsolutePath等方法,我试验下了,发觉太麻烦还没意思,不再多管。

再深入一点,甚至图片放在与page.xaml同级的文件夹下,一样可以使用反斜杠进行引用。只需要在相应图片的属性里,把Build Action选择为"Content"即可,不过该图片还是被放到.xap压缩包里了,这是后话,参见《Sivlerlight Resource 概览》。

转载:http://hi.baidu.com/liongg/blog/item/b91a495494e34152564e00b4.html

转载于:https://www.cnblogs.com/star250/archive/2010/07/13/1776656.html

Silverlight Image Source URI 加反斜杠引和不加的区别相关推荐

  1. silverlight Image Source URI : 一个反斜杠引发的血案

    silverlight Image Source URI : 一个反斜杠引发的血案 Silverlight2 现在支持的Image格式有jpg和png,部分png编码也不支持,同时有些png在xaml ...

  2. php自动加反斜杠,处理php自动反斜杠的函数代码

    复制代码代码如下: //处理php自动反斜杠 if(get_magic_quotes_gpc()){ functionstripslashes_deep($value) { $value=is_arr ...

  3. python在字符串结尾加反斜杠_Python原始字符串和尾部反斜杠

    我曾经碰到过一个东西,想知道它是一个Python的"虫子"还是至少是一个不适合吃的东西.我很好奇是否有人知道这种行为的任何理由.我刚想到读"像Python一样的代码&qu ...

  4. PHP表单提交后引号前自动加反斜杠的原因与处理办法

    最近发现做一个php程序表单数据提交写入数据库的内容中只要是带有单引号或者双引号的内容时,后面都会增加一个反斜杠.而且每保存一次增加一个反斜杠,很是郁闷. 于是从网上搜了一下原来是PHP程序为了防止注 ...

  5. php 网址尾部带斜杠和不带区别,URL路径中带正斜杠/与不带的区别

    简单理解:不带斜杠的URL结尾通常被服务器识别成独立文件,当它去查找这个文件缺失的时候,就会重定向到带斜杠的URL,这个时候带斜杠的URL,可以理解成为是目录. 解读URL结尾斜杠的产生: 举例: - ...

  6. Nginx中proxy_pass末尾带斜杠/和不带的区别

    总结: 如果proxy_pass末尾有斜杠/,proxy_pass不拼接location的路径 如果proxy_pass末尾无斜杠/,proxy_pass会拼接location的路径 一.proxy_ ...

  7. 斜杆和反斜杠在不同系统的区别

    在linux系统中: /:代表文件路径 \:代表转义字符 Window系统中: \:代表路径以及转义字符 /:代表网络请求 转载于:https://www.cnblogs.com/thyHome/p/ ...

  8. C-数字0 反斜杠0 字符0 NULL区别

    数字0 '\0' NULL 都为数字0,NULL常用于0,0 '\0' 用于字符串结尾符 '0' 其对应的ascii 为48 '\0' 其对应的ascii 为0 printf("%d %d\ ...

  9. 正则表达式如何匹配正反斜杠

    转载链接:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C ...

最新文章

  1. Python的 5 种高级用法,效率提升没毛病!
  2. oracle 查二进制字符串,检测二进制文件 - Oracle® Developer Studio 12.5:Discover 和 Uncover 用户指南...
  3. 网络工程中的割接是什么意思?
  4. 高并发下秒杀商品,必须知道的9个细节
  5. [ 转载 ] Java基础12--基础学习总结——数组
  6. IdentityServer4客户端JWT解密实现(基于.net4.0)
  7. Xbox360手柄驱动xbcd+
  8. 施耐德 m340 编程手册_PLC模拟量的通用转换原理以及编程方法
  9. Oracle函数——COALESCE
  10. 龙渊服务器信息丢失,多多自走棋:最“短命”的服务器,上线5天就完成任务下线...
  11. 企业管理小故事【有问题4个管理小法则】
  12. 网站数据采集器-文章采集工具-关键词文章采集工具
  13. php表格整体怎么移动,超级表格新版移动端操作指南
  14. 基于uniapp的个人课程表
  15. 惠普暗影精灵4pro安装ubuntu16.04
  16. resultMap使用不当导致出现There is no WRITEABLE property named 'student_id' in class 'com.ssi.model.Stud
  17. UE4 第三人称人物 目标偏移(Aim offset)学习笔记
  18. jzoj. 1285. 奶酪厂
  19. Linux 命令(217)—— iptables-restore 命令
  20. 【朝花夕拾】Android性能篇之(四)Apk打包

热门文章

  1. Java8新特性之函数式接口
  2. 64位x86-64处理器架构
  3. 【译】Ethereum Wallet in a Trusted Execution Environment / Secure Enclave
  4. android shell hello world,Android Framework 之HelloWorld(三)
  5. 韩信点兵python源代码_少儿编程|Python小课堂 – 韩信点兵
  6. python post请求_python发送http的post请求
  7. android标题栏添加按钮_[办公小技巧]Excel 添加页码,自定义和指定单元格页码添加...
  8. JZOJ 4676. 【NOIP2016提高A组模拟7.21】模板串
  9. 建立文件服务器好处,文件服务器好处
  10. android 缩略图uri_课题_android系统通过图片绝对路径获取URI的三种方法