14

WPF Pack URIでは、次のように 3 つの連続するコンマを使用します。

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

その,,,部分は何かを意味するはずですか?区切り文字だけですか?カンマの間に何か入ることはできますか?

4

2 に答える 2

8

バックグラウンド

URIスキームオーソリティ、およびパス1で構成されます。
たとえば、http次の Web ページの URL を使用します。

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

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

packURI

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:/// の 2 つの機関をサポートしています。application:/// オーソリティは、リソース ファイルやコンテンツ ファイルなど、コンパイル時に認識されるアプリケーション データ ファイルを識別します。siteoforigin:/// オーソリティは、起点ファイルのサイトを識別します。

URI の機関コンポーネントとして使用するには、スラッシュが URI のパスコンポーネントにpack属すると誤解されないようにエンコードする必要があります。 彼らがそれをエンコードするために選択した方法は、スラッシュをコンマに置き換えることです. 同じドキュメントページから:pack


パック URI の機関コンポーネントは、パッケージを指す埋め込み URI であり、RFC 2396 に準拠する必要があります。さらに、「/」文字を「,」文字、および「%」や「 「?」エスケープする必要があります。詳細については、OPC を参照してください。


1) さらにクエリとフラグメントの可能性がありますが、ここでは関係ありません。

于 2018-03-20T08:37:28.830 に答える
7

答えはリンク先のページにあり、

  • 権限:application:///

... さらに、「/」文字を「,」文字、および「%」や「?」などの予約文字に置き換える必要があります。エスケープする必要があります。詳細は OPC をご覧ください

そう

その,,,部分は何かを意味するはずですか?

の代用です///

カンマの間に何か入ることはできますか?

いいえ。

訂正: OPC (Open Packaging) リンクはECMA-376につながり、次のような例が含まれています
pack://http%3c,,www.openxmlformats.org,my.container/a/b/foo.xml

しかし、それはWPFには当てはまりません。

于 2013-04-27T19:38:33.073 に答える