zoukankan      html  css  js  c++  java
  • 转:pack URI in WPF

    一开始看到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

  • 相关阅读:
    10条建议帮助你创建更好的jQuery插件
    jQuery的end()方法使用详解
    jquery合并表格中相同文本的相邻单元格
    jQuery动态星级评分效果实现方法
    jQuery过滤HTML标签并高亮显示关键字的方法
    jQuery实现高亮显示网页关键词的方法
    深入.net调用webservice的总结分析
    C#中遍历各类数据集合的方法总结
    asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
    使用交叉验证对鸢尾花分类模型进行调参(超参数)
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/6018772.html
Copyright © 2011-2022 走看看