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。