WPF 包 URI使用三个连续的逗号,例如:
pack://application:,,,/myFolder/myPic.bmp
这,,,
部分应该意味着什么吗?它只是一个分隔符吗?逗号之间可以有任何东西吗?
URI由scheme、authority和path 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:/// 权限标识在编译时已知的应用程序数据文件,包括资源和内容文件。siteoforigin:/// 权限标识原始文件的站点。
为了用作 URI 的授权组件pack
,需要对其进行编码,以便其斜杠不会被误解为属于URI的路径组件。
他们选择对其进行编码的方式是用逗号替换斜杠。
从同一文档页面:pack
注意
包 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。