一开始看到WPF里面经常用如下语句来构造资源文件Uri:

Uri uri = new Uri("/AssemblyName;component/image.png");

我还以为这种格式的字符串是URI标准规定的,但是网上查了一下却没发现有这种格式的URI字符串。

URI是统一资源标识符,通用文法为:

协议名(http,https,ftp,file等)+冒号+协议所对应的内容

URI又分为URL和URN,URL是用来定义一个资源的访问路径.而URN则是用来定义一个资源的名称。(http://zh.wikipedia.org/zh/统一资源标志符)

仔细看了一下MSDN,才发现上面格式的字符串是微软件自己扩展出来的一种URI格式,即Pack URI.这种URI在WPF里用得非常多,主要用来定位

资源文件,以及Xaml文件等。

Pack URI主要是用于描述一个Package中所包含的组成单元。

1. Pack URI的主要文法

pack://authority/path

其中authority指这里所指的Package的类型,而path主要指这里所指的组成单元在Package中路径。

WPF所支持的authority包括:application:/// 和 siteoforigin:/// :

前者主要用来描述在编绎时就已知的资源(比如:资源文件等被Project所引用的文件在编绎时刻均已知),

而后者主要用来描述在编绎时无法确定其状态的外部资源(比如:硬盘上的某个文件,或者网格上的某个文件)。

注意:在实际构建Pack URI的时需要将authority中所包含的"/"换成",". 因此 application:/// 应该为 application:,,,,siteoforigin:///类推。

2. Pack URI的用法

(1)表示当前Assembly中所引用的资源时,采用如下格式构建Pack URI

pack://application:,,,/(资源相对于Assembly所在目录的相对路径)

(2)表示当前Assemby所引用的其它Assembly所引用的资源时,采用如下格式构建Pack URI

pack://application:,,,/AssemblyShortName[;Version][;PublicKey];component/(资源相对于Assembly所在目录的相对路径)

(3)表示siteoforigin类型的资源时,采用如下格式构建Pack URI

pack://siteoforigin:,,,/(资源相对于当前执行的assembly所在位置的路径)

3. Absolute pack URI and relative pack URI

以上所说的都是Absolute pack URI,格式包含schema://authority/path.字符串比较长,写起来不是很方便。

因此还有一种简化版的relative pack URI,构造时只需要使用path即可。

注意:当表示当前Assembly中所引用的资源时,path需表示目标资源相对于当前路径的相对路径。在路径前加"/"表示相对于Assembly的根目录

原文地址:http://www.cnblogs.com/Code-life/archive/2012/10/08/2715930.html

【转】【WPF】资源读取 URI的更多相关文章

  1. WPF 中图片的加载 ,使用统一资源标识符 (URI)

    在wpf中,设置图片路径有2种方法: 1.xaml文件中,指定路径 <Button Name=" HorizontalAlignment="Right" Verti ...

  2. WPF快速入门系列(6)——WPF资源和样式

    一.引言 WPF资源系统可以用来保存一些公有对象和样式,从而实现重用这些对象和样式的作用.而WPF样式是重用元素的格式的重要手段,可以理解样式就如CSS一样,尽管我们可以在每个控件中定义格式,但是如果 ...

  3. 九,WPF资源

    WPF资源的优点 WPF资源系统是一种保管一系列有用对象的简单方法,从而可以更容易地重用这些对象,它主要有以下优点: 高效,通过资源可以定义一个对象,并在标记中的多个地方重用,这会使代码变的更加精简, ...

  4. WPF资源

    在WPF中.有着两种资源, 一种是组件资源:又被称为程序集资源,以二进制存在编译后的程序集中,通常用于存放图片或其他音频文件. 第二种是对象资源:通常放于xaml中.比如WPF的样式和数据绑定特性. ...

  5. WPF中的URI

    在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI ...

  6. WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树)

    原文:WPF 资源(StaticResource 静态资源.DynamicResource 动态资源.添加二进制资源.绑定资源树) 一.WPF对象级(Window对象)资源的定义与查找 实例一: St ...

  7. WPF快速入门系列(6)—— WPF资源和样式

    一.引言 WPF资源系统可以用来保存一些公有对象和样式,从而实现重用这些对象和样式的作用.而WPF样式是重用元素的格式的重要手段,可以理解样式就如CSS一样,尽管我们可以在每个控件中定义格式,但是如果 ...

  8. [原创]WPF资源Binding自定义集合类。

    简单介绍一下Wpf资源字典: 每个WPF界面元素都有一个名为Resource的属性,这个属性继承至FrameworkElement类,其类型为ResourceDictionary.ResourceDi ...

  9. 地址(Address)——统一资源表示(URI)——WCF学习笔记(2)

    统一资源标识(URI) URI:Uniform Resource Identifier(统一资源标识),唯一地标识一个网络资源的同时也表示资源所处的位置的方式(资源访问所用的网络协议). URI结构: ...

随机推荐

  1. 学写了一段LINQ

    要写一段代码读入一个用空格分隔的几列的文件,程序中有多处类似的文件,所以想着有没有什么好点的办法. 井名       X坐标       Y坐标         深度 测试井1  634600    ...

  2. UIScrollView循环滚动1

    现在基本每一个商业APP都会有循环滚动视图,放一些轮播广告之类的,都是放在UIScrollView之上.假如我要实现N张图片的轮播,我借鉴了几个博文,得到两种方法实现: [第一种]:如下图(图片来源于 ...

  3. E/AndroidRuntime(1636): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.***.app.wx.MainActivity} : android.view.InflateException: Binary XML file line #51 :

    类中加载的xml中,所自定义组件的包名错误(xml中51行错误:自定义组件包名写错了).

  4. iOS闹钟实现

    UILocalNotification *notification=[[UILocalNotification alloc] init];         if (notification!=nil) ...

  5. 《HTML5与CSS3实例教程》

    <HTML5与CSS3实例教程> 基本信息 作者: (美)Brian P. Hogan 译者: 卢俊祥 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:97871153634 ...

  6. Effective Java 52 Refer to objects by their interfaces

    Principle If appropriate interface types exist, then parameters, return values, variables, and field ...

  7. 【mysql】使用tpcc-mysql进行压力测试

    Tpcc-mysql是percona基于tpcc衍生出来专用于mysql基准测试的产品 ,可以参见 <高性能MySQL第三版> 一.安装 rpm -Uvh http://dl.fedora ...

  8. Linux下使用iostat 监视I/O状态

    我们可以使用 sar(1), pidstat(1), mpstat(1), vmstat(8) 来监控 一.安装 yum install sysstat 二.参数解释 FILES /proc/stat ...

  9. PL/SQL之--流程控制语句

    一.简介 像编程语言一样,oracle PL/SQL也有自己的流程控制语句.通过流程控制语句,我们可以在PL/SQL中实现一下比较复杂的业务逻辑操作.而无需到程序中去控制,在一定程度上提高了效率,这也 ...

  10. JRE与JDK的区别

    转自:http://swiftlet.net/archives/639 1. 定义JRE(Java Runtime Enviroment)是Java的运行环境.面向Java程序的使用者,而不是开发者. ...