WPF包URI中的逗号

时间:2013-04-27 19:28:27

标签: c# wpf

WPF Pack URIs使用三个连续的逗号,例如:

pack://application:,,,/myFolder/myPic.bmp

,,,部分应该是什么意思吗?它只是一个分界符吗?可以在逗号之间进行任何操作吗?

2 个答案:

答案 0 :(得分:6)

答案在您链接的页面上,

  
      
  • 权限:application:///
  •   

  

...此外,“/”字符必须替换为“,”字符和保留字符,例如“%”和“?”必须逃脱。有关详细信息,请参阅OPC

所以

  

,,,部分应该是什么意思吗?

它可以替代///

  

逗号之间可以有任何内容吗?

<击> 没有。

更正:OPC(开放式打包)链接指向ECMA-376,其中包含例如
的示例 pack://http%3c,,www.openxmlformats.org,my.container/a/b/foo.xml

但afaik不适用于WPF。

答案 1 :(得分:3)

背景

URI is composed of 计划权限路径 1
例如,访问此网页的http网址:

https://stackoverflow.com/questions/16256056/commas-in-wpf-pack-uris

scheme    = https://
authority = stackoverflow.com
path      = /questions/16256056/commas-in-wpf-pack-uris

pack URI

这同样适用于您的pack URI:

pack://application:,,,/myFolder/myPic.bmp

scheme    = pack://
authority = application:,,,
path      = /myFolder/myPic.bmp

这里不寻常的是权限部分由另一个URI 的编码表示组成。其他URI看起来像这样:

application:///

scheme    = application://
authority = 
path      = /

它指的是&#34;包&#34; - 具体来说,是当前应用程序的资源文件包。来自您已链接的documentation page

  

WPF支持两个权限:application:///和siteoforigin:///。 application:/// authority识别编译时已知的应用程序数据文件,包括资源和内容文件。 siteoforigin:/// authority标识原始文件站点。

为了用作pack URI的权限组件,需要对其进行编码,使其斜杠不会被误解为属于 pack URI的路径组件 他们选择编码的方式是用逗号替换斜杠 从同一文档页面:

  

请注意
  包URI的权限组件是指向包的嵌入式URI,必须符合RFC 2396.此外,&#34; /&#34;字符必须替换为&#34;,&#34;字符和保留字符,如&#34;%&#34;和&#34;?&#34;必须逃脱。有关详细信息,请参阅OPC。

1)可能还有一个查询和片段,但这些在这里并不相关。