一开始看到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. [Android]IllegalStateException: Could not find method onBind(View)

    FATAL EXCEPTION: main Process: org.diql.aidldemo, PID: 2274 java.lang.IllegalStateException: Could n ...

  2. java多线程系列7-停止线程

    本文主要总结在java中停止线程的方法 在java中有以下三种方法可以终止正在运行的线程: 1.使用退出标志 2.使用stop方法强行终止线程,但是不推荐,因为stop和suspend.resume一 ...

  3. 安卓第九天笔记-Activity

    安卓第九天笔记-Activity 1.创建Activity 一个界面对应一个activity 创建一个Activity  1.写一个JAVA类,继承Activity publicclass CalcA ...

  4. Apple Pay(转)

    Apple Pay 是在 iOS 8 中第一次被介绍,它可以为你的应用中的实体商品和服务,提供简单.安全.私密的支付方式.它使得用户支付起来非常简便,只需按一下指纹就可以授权进行交易. Apple P ...

  5. iOS之UI--指示器HUD的创建和设置

    指示器的创建和设置 渐变动画 描述: 使用label就能制作指示器,原理:就是让label以动画的形式慢慢显示和消失 最好是半透明的 指示器有时候也被称为:HUD,遮盖,蒙版 思路步骤: 1.先在st ...

  6. android intent 5.1

    1.intent 6 items action, data(uri &type),Component name,Extras,flags 2.data---uri & type 不管使 ...

  7. 转 自定义View之onMeasure()

    可以说重载onMeasure(),onLayout(),onDraw()三个函数构建了自定义View的外观形象.再加上onTouchEvent()等重载视图的行为,可以构建任何我们需要的可感知到的自定 ...

  8. opencms忘记Admin用户登录密码解决方案

    不知道现在还有多少人在用opencms: 我今天就是遇到一个问题,很久之前部署的一台opencms服务器,突然忘记密码了,记录下处理方法: 希望对你有帮助: opencms忘记Admin用户登录密码了 ...

  9. PHP错误日志控制(display_errors和error_reporting)

    display_errors和error_reporting是php程序调试过程中两个非常重要的参数,下面就来介绍一下这两个错误日志的配置如何开启和关闭: 我们知道在产品的生产环境肯定是不能够显示错误 ...

  10. 关于Redis的启动过程

    一.简介 Redis的启动也就是main函数的执行,程序的入口在redis.c中,启动流程: 1. 初始化默认服务器配置,如果是sentinel模式还需进行额外的配置 2. 修改配置文件或配置选项,这 ...