一开始看到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的根目录

https://msdn.microsoft.com/library/aa970069(v=vs.100).aspx

转:pack URI in WPF的更多相关文章

  1. WPF中的Pack URI

    更多资源:http://denghejun.github.io 问题 说来也简单:首先,我在WPF项目中建立了一个用户自定义控件(CustomControl),VS模板为我们自动生成了 CustomC ...

  2. WPF 中的 Pack URI地(资源文件加载)

    参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...

  3. 资源文件加载(Pack URI 方案)

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

  4. pack URI

    WPF使用pack URI语法寻找资源. URI负责搜索如下位置的资源: 当前程序集 引用的程序集 相对于程序集的某个位置 应用程序的源站点 pack URI的格式:pack://机构/路径 机构指定 ...

  5. [WPF]使用Pack URI路径訪问二进制资源

    一.路径格式定义 完整的URI定义为: pack://application,,,[/可选程序集名称;][可选版本;][目录名称/]文件名 缩略后的写法是: [目录名称/]文件名 二.在XAML代码中 ...

  6. wpfのuri(让你完全明白wpf的图片加载方式以及URI写法)

    绝对 pack WPF URI pack://application:,,,/是协议:“,,,”是“///”的变体 1.资源文件 — 本地程序集 Uri uri = new Uri("pac ...

  7. 【转】【WPF】资源读取 URI

    一开始看到WPF里面经常用如下语句来构造资源文件Uri: Uri uri = new Uri("/AssemblyName;component/image.png"); 我还以为这 ...

  8. WPF中的URI

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

  9. WPF之命名空间和资源

    1.参考: https://msdn.microsoft.com/zh-cn/library/ms747086(v=vs.110).aspx http://www.cnblogs.com/cww201 ...

随机推荐

  1. IT 相关期刊

    码农周刊查阅地址: http://weekly.manong.io/issues/ 快乐码农查阅地址: http://www.codeceo.com/article/category/weekly

  2. JSON.parse()的正确用法

    昨天晚上在项目中使用JSON.parse()来将字符串格式的数据转换成json,结果悲剧了,总感觉方法没有用错,可是就是报错!想了好久,最后发现原来是json字符串格式不标准! 如:var a = “ ...

  3. phpstorm8.0汉化版下载

    下载地址http://www.52z.com/soft/161911.html 汉化包:http://www.7down.net/soft/20586.html phpStorm汉化方法 1.安装原版 ...

  4. 【巩固】CSS3的animation基础

    终于结束了最后css3的一节课,关于animation的使用,其实之前已经用过一次.大致要了解的就是,关于如何让动画停在最后一帧的方法.视频里有提到过css3出了个新的样式可以实现,但是老师没有记住, ...

  5. SQL Server复制需要有实际的服务器名称才能连接到服务器

    服务器上安装的WIN2008 R2,然后没有在意机器名,安装了SQL2008 R2数据库之后,配置AD域的时候修改了机器名. 然后,开始配置数据库镜像同步的时候,先试了下数据库复制发布,结果提示“SQ ...

  6. Unity5版本的AssetBundle打包方案之打包Scene场景

    using UnityEngine; using System.Collections; using UnityEditor; /// <summary> /// 脚本位置:Editor文 ...

  7. Protractor

    官网地址:http://www.protractortest.org/ 1. 预备环境 protractor 是一个 Node.js 程序,为了运行 protractor ,你首先需要 Node 环境 ...

  8. Apache配置简单http认证

    首先要说明的是这种认证是不安全的,密码是明文传输,因此很容易被各种嗅探软件嗅探到密码,只能用于简单的认证.今天上午把ownCloud卸载了,这玩 意儿中看不中用啊,原来10M的访问速度被限制成了几百K ...

  9. eclipse报错 :java was started but returned exit code=13

    一个礼拜没打开自己电脑上的eclipse,一打开居然报错,错误提示如下: cdm运行一下Java -version和javac 运行javac时报错,错误提示如下: 然后发现jdk的bin下没有dt. ...

  10. <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 的说明

    X-UA-Compatible是针对ie8新加的一个设置,对于ie8之外的浏览器是不识别的,这个区别与 content="IE=7"在无论页面是否包含<!DOCTYPE> ...