WPF包URI中的逗号

WPF包URI使用三个连续的逗号,例如:

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

这个,,,部分是什么意思? 它只是一个分界符吗? 逗号之间可以有任何内容吗?

背景

URI 由 方案权限路径 1组成
例如,获取此网页的http URL:

 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 = / 

它指的是“包” – 具体来说,指的是当前应用程序的资源文件包。 从您已链接的文档页面 :

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

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

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


1)可能还有查询和片段,但这些与此无关。

答案在您链接的页面上,

  • 权限: application:///

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

所以

这个,,,部分是什么意思?

它是///的替代品

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

没有。

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

但afaik不适用于WPF。