WPF におけるパッケージの URIPack URIs in WPF

Windows Presentation Foundation (WPF) では、Uniform Resource Identifier (URI)uniform resource identifiers (URIs)を識別し、次を含む、さまざまな方法でファイルを読み込むために使用します。In Windows Presentation Foundation (WPF), Uniform Resource Identifier (URI)uniform resource identifiers (URIs) are used to identify and load files in many ways, including the following:

  • 指定する、ユーザー インターフェイス (UI)user interface (UI)を表示するときに、アプリケーションを初めて起動します。Specifying the ユーザー インターフェイス (UI)user interface (UI) to show when an application first starts.

  • イメージの読み込み。Loading images.

  • ページへの移動。Navigating to pages.

  • 実行可能でないデータ ファイルの読み込み。Loading non-executable data files.

さらに、URIURIsを識別し、さまざまななど、次の場所からファイルを読み込むために使用できます。Furthermore, URIURIs can be used to identify and load files from a variety of locations, including the following:

  • 現在のアセンブリ。The current assembly.

  • 参照アセンブリ。A referenced assembly.

  • アセンブリに対して相対的な位置。A location relative to an assembly.

  • アプリケーションの起点サイト。The application's site of origin.

識別し、これらの場所からこの種のファイルを読み込むのため、一貫性のあるメカニズムを提供するWPFWPFの拡張性を活用して、パック URI スキームします。To provide a consistent mechanism for identifying and loading these types of files from these locations, WPFWPF leverages the extensibility of the pack URI scheme. このトピックでは、スキームの概要を説明します、パックを構築する方法について説明しますURIURIsさまざまなシナリオ、絶対および相対について説明しますURIURIsURIURIパックを使用する方法を表示する前に、解像度URIURIs両方マークアップからコード。This topic provides an overview of the scheme, covers how to construct pack URIURIs for a variety of scenarios, discusses absolute and relative URIURIs and URIURI resolution, before showing how to use pack URIURIs from both markup and code.

パック URI スキームThe Pack URI Scheme

パックURIURIスキームを使って、 Open Packaging Conventions (OPC) 仕様は、整理、およびコンテンツを識別するためのモデルについて説明します。The pack URIURI scheme is used by the Open Packaging Conventions (OPC) specification, which describes a model for organizing and identifying content. このモデルの主要な要素には、パッケージとパーツ、場所、パッケージ論理的なコンテナーは、1 つまたは複数の論理パーツします。The key elements of this model are packages and parts, where a package is a logical container for one or more logical parts. この概念を次の図に示します。The following figure illustrates this concept.

パッケージとパーツのダイアグラムPackage and Parts diagram

パーツを識別するために、OPC 仕様は RFC 2396 の拡張性を利用 (Uniform Resource Identifier (URI): 一般構文)、パックを定義するURIURIスキーム。To identify parts, the OPC specification leverages the extensibility of RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax) to define the pack URIURI scheme.

指定されたスキーム、URIURIそのプレフィックスによって定義されます http、ftp、ファイルはよく知られている例です。The scheme that is specified by a URIURI is defined by its prefix; http, ftp, and file are well-known examples. パックURIURIスキーム、スキームとして"pack"を使用して、2 つのコンポーネントが含まれています: オーソリティとパス。The pack URIURI scheme uses "pack" as its scheme, and contains two components: authority and path. パックの形式はURIURIします。The following is the format for a pack URIURI.

pack://機関/パスpack://authority/path

機関によって、一部が含まれているパッケージの種類を指定します。 中に、パスパッケージ内のパーツの場所を指定します。The authority specifies the type of package that a part is contained by, while the path specifies the location of a part within a package.

この概念を次の図に示します。This concept is illustrated by the following figure:

パッケージ、オーソリティ、およびパスの関係Relationship among package, authority, and path

パッケージとパーツは、アプリケーションとファイルに似ています。つまり、アプリケーション (パッケージ) は、次のような 1 つ以上のファイル (パーツ) を含むことができます。Packages and parts are analogous to applications and files, where an application (package) can include one or more files (parts), including:

  • ローカル アセンブリにコンパイルされるリソース ファイル。Resource files that are compiled into the local assembly.

  • 参照センブリにコンパイルされるリソース ファイル。Resource files that are compiled into a referenced assembly.

  • 参照元センブリにコンパイルされるリソース ファイル。Resource files that are compiled into a referencing assembly.

  • コンテンツ ファイル。Content files.

  • 起点サイト ファイル。Site of origin files.

これらの種類のファイルにアクセスするWPFWPF2 つのオーソリティをサポートしています: application:///と siteoforigin:///。To access these types of files, WPFWPF supports two authorities: application:/// and siteoforigin:///. application:/// オーソリティは、リソース ファイルやコンテンツ ファイルなど、コンパイル時に既知のアプリケーション データ ファイルを識別します。The application:/// authority identifies application data files that are known at compile time, including resource and content files. siteoforigin:/// オーソリティは、起点サイト ファイルを識別します。The siteoforigin:/// authority identifies site of origin files. 各オーソリティのスコープを次の図に示します。The scope of each authority is shown in the following figure.

パック URI のダイアグラムPack URI diagram

注意

パックの権限を持つコンポーネントURIURIが埋め込まれたURIURIパッケージを指すこと、および RFC 2396 に準拠する必要があります。The authority component of a pack URIURI is an embedded URIURI that points to a package and must conform to RFC 2396. さらに、"/" 文字は "," 文字に置き換える必要があり、"%" や "?" などの予約文字はエスケープする必要があります。Additionally, the "/" character must be replaced with the "," character, and reserved characters such as "%" and "?" must be escaped. 詳細については、OPC を参照してください。See the OPC for details.

次のセクションでは、パックを作成する方法を説明するURIURIsリソース、コンテンツ、および起点サイト ファイルを識別するための適切なパスと組み合わせてこれら 2 つのオーソリティを使用します。The following sections explain how to construct pack URIURIs using these two authorities in conjunction with the appropriate paths for identifying resource, content, and site of origin files.

リソース ファイルのパック URIResource File Pack URIs

リソース ファイルとして構成されているMSBuildMSBuildResource項目し、アセンブリにコンパイルされます。Resource files are configured as MSBuildMSBuildResource items and are compiled into assemblies. WPFWPF パックの構築をサポートURIURIsは、ローカル アセンブリにコンパイルされたか、ローカル アセンブリから参照されるアセンブリにコンパイルされるリソース ファイルを識別するために使用できます。 supports the construction of pack URIURIs that can be used to identify resource files that are either compiled into the local assembly or compiled into an assembly that is referenced from the local assembly.

ローカル アセンブリ リソース ファイルLocal Assembly Resource File

パックURIURI次のオーソリティとパスのリソースに対して、ローカル アセンブリにコンパイルされたファイルを使用します。The pack URIURI for a resource file that is compiled into the local assembly uses the following authority and path:

  • オーソリティ: application:///。Authority: application:///.

  • パス: ローカル アセンブリのプロジェクト フォルダーのルートに対して相対的なパスを含むリソース ファイルの名前。Path: The name of the resource file, including its path, relative to the local assembly project folder root.

次の例は、パックURIURIXAMLXAMLローカル アセンブリのプロジェクト フォルダーのルートに配置されているリソース ファイル。The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root of the local assembly's project folder.

pack://application:,,,/ResourceFile.xaml

次の例は、パックURIURIXAMLXAMLローカル アセンブリのプロジェクト フォルダーのサブフォルダーに配置されているリソース ファイル。The following example shows the pack URIURI for a XAMLXAML resource file that is located in a subfolder of the local assembly's project folder.

pack://application:,,,/Subfolder/ResourceFile.xaml

参照アセンブリ リソース ファイルReferenced Assembly Resource File

パックURIURI次のオーソリティとパスには、リソースの参照アセンブリにコンパイルされたファイルを使用します。The pack URIURI for a resource file that is compiled into a referenced assembly uses the following authority and path:

  • オーソリティ: application:///。Authority: application:///.

  • パス: 参照アセンブリにコンパイルされるリソース ファイルの名前。Path: The name of a resource file that is compiled into a referenced assembly. パスは、次の書式に従う必要があります。The path must conform to the following format:

    AssemblyShortName{;バージョン] {;公開鍵]; component/パスAssemblyShortName{;Version]{;PublicKey];component/Path

    • AssemblyShortName: 参照アセンブリの短い名前。AssemblyShortName: the short name for the referenced assembly.

    • ;Version (省略可能): リソース ファイルを含む参照アセンブリのバージョン。;Version [optional]: the version of the referenced assembly that contains the resource file. これは、同じ短い名前を持つ 2 つ以上の参照アセンブリが読み込まれるときに使用されます。This is used when two or more referenced assemblies with the same short name are loaded.

    • ;PublicKey (省略可能): 参照アセンブリの署名に使用された公開鍵。;PublicKey [optional]: the public key that was used to sign the referenced assembly. これは、同じ短い名前を持つ 2 つ以上の参照アセンブリが読み込まれるときに使用されます。This is used when two or more referenced assemblies with the same short name are loaded.

    • ;component: 参照されるアセンブリが、ローカル アセンブリから参照されることを指定します。;component: specifies that the assembly being referred to is referenced from the local assembly.

    • /Path: 参照アセンブリのプロジェクト フォルダーのルートに対して相対的なパスを含むリソース ファイルの名前。/Path: the name of the resource file, including its path, relative to the root of the referenced assembly's project folder.

次の例は、パックURIURIXAMLXAML参照アセンブリのプロジェクト フォルダーのルートに配置されているリソース ファイル。The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root of the referenced assembly's project folder.

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

次の例は、パックURIURIXAMLXAML参照アセンブリのプロジェクト フォルダーのサブフォルダーに配置されているリソース ファイル。The following example shows the pack URIURI for a XAMLXAML resource file that is located in a subfolder of the referenced assembly's project folder.

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml

次の例は、パックURIURIXAMLXAML、バージョン固有の参照先アセンブリのプロジェクト フォルダーのルート フォルダーにあるリソース ファイル。The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root folder of a referenced, version-specific assembly's project folder.

pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml

なお、パックURIURI参照アセンブリ リソース ファイルの構文は、アプリケーションでのみ使用できます:///オーソリティします。Note that the pack URIURI syntax for referenced assembly resource files can be used only with the application:/// authority. たとえば、次はサポートされていませんでWPFWPFします。For example, the following is not supported in WPFWPF.

pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml

コンテンツ ファイルのパック URIContent File Pack URIs

パックURIURIコンテンツ ファイルは、次のオーソリティとパスを使用します。The pack URIURI for a content file uses the following authority and path:

  • オーソリティ: application:///。Authority: application:///.

  • パス: アプリケーションのメインの実行可能アセンブリのファイル システム位置に対して相対的なパスを含む、コンテンツ ファイルの名前。Path: The name of the content file, including its path relative to the file system location of the application's main executable assembly.

次の例は、パックURIURIXAMLXAMLコンテンツ ファイル、実行可能アセンブリと同じフォルダーに配置します。The following example shows the pack URIURI for a XAMLXAML content file, located in the same folder as the executable assembly.

pack://application:,,,/ContentFile.xaml

次の例は、パックURIURIXAMLXAMLコンテンツ ファイル、アプリケーションの実行可能アセンブリに対して相対的なサブフォルダーにあります。The following example shows the pack URIURI for a XAMLXAML content file, located in a subfolder that is relative to the application's executable assembly.

pack://application:,,,/Subfolder/ContentFile.xaml

注意

HTMLHTML コンテンツ ファイルにナビゲートすることはできません。 content files cannot be navigated to. URIURIスキームのみへのナビゲーションをサポートするHTMLHTML起点サイトにあるファイル。The URIURI scheme only supports navigation to HTMLHTML files that are located at the site of origin.

起点サイトのパック URISite of Origin Pack URIs

パックURIURI次のオーソリティとパスの起点サイト ファイルを使用します。The pack URIURI for a site of origin file uses the following authority and path:

  • オーソリティ: siteoforigin:///。Authority: siteoforigin:///.

  • パス: 実行可能アセンブリの起動元の位置に対して相対的なパスを含む起点サイト ファイルの名前。Path: The name of the site of origin file, including its path relative to the location from which the executable assembly was launched.

次の例は、パックURIURIXAMLXAML起点サイト ファイル、実行可能アセンブリの起動元の場所に保存します。The following example shows the pack URIURI for a XAMLXAML site of origin file, stored in the location from which the executable assembly is launched.

pack://siteoforigin:,,,/SiteOfOriginFile.xaml

次の例は、パックURIURIXAMLXAML起点サイト ファイル、アプリケーションの実行可能アセンブリの起動元の位置に対して相対的なサブフォルダーに格納されています。The following example shows the pack URIURI for a XAMLXAML site of origin file, stored in subfolder that is relative to the location from which the application's executable assembly is launched.

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml

ページ ファイルPage Files

XAMLXAML として構成されているファイルMSBuildMSBuildPage項目は、リソース ファイルと同じ方法でアセンブリにコンパイルされます。 files that are configured as MSBuildMSBuildPage items are compiled into assemblies in the same way as resource files. その結果、 MSBuildMSBuild Pageパックを使用して項目を識別できますURIURIsリソース ファイル。Consequently, MSBuildMSBuildPage items can be identified using pack URIURIs for resource files.

種類のXAMLXAMLとして一般的に構成されているファイルMSBuildMSBuildPageがルート要素として次のいずれかの項目があります。The types of XAMLXAML files that are commonly configured as MSBuildMSBuildPage items have one of the following as their root element:

絶対および相対パック URIAbsolute vs. Relative Pack URIs

完全修飾されたパックURIURIスキーム、権限、および、パスが含まれています、絶対パックと見なされますURIURIします。A fully qualified pack URIURI includes the scheme, the authority, and the path, and it is considered an absolute pack URIURI. 開発者は、簡略化したものとしてXAMLXAML要素の相対パックを適切な属性を設定することにより通常URIURI、パスのみが含まれます。As a simplification for developers, XAMLXAML elements typically allow you to set appropriate attributes with a relative pack URIURI, which includes only the path.

たとえば、次のような絶対パックURIURIローカル アセンブリ内のリソース ファイル。For example, consider the following absolute pack URIURI for a resource file in the local assembly.

pack://application:,,,/ResourceFile.xaml

相対パックURIURIはこのリソースを参照するファイルは、次になります。The relative pack URIURI that refers to this resource file would be the following.

/ResourceFile.xaml

注意

起点サイト ファイルがアセンブリに関連付けられていないため、それらのみ参照できます絶対パックURIURIsします。Because site of origin files are not associated with assemblies, they can only be referred to with absolute pack URIURIs.

既定では、相対パックURIURIマークアップまたは参照を含むコードの位置を基準と見なされます。By default, a relative pack URIURI is considered relative to the location of the markup or code that contains the reference. 先頭にバック スラッシュを使用する場合のただし、相対パックURIURI参照がそのアプリケーションのルートを基準と見なされます。If a leading backslash is used, however, the relative pack URIURI reference is then considered relative to the root of the application. たとえば、次のようなプロジェクト構造を考えてみます。For example, consider the following project structure.

App.xaml

Page2.xaml

\SubFolder

+ Page1.xaml

+ Page2.xaml

Page1.xaml が含まれている場合、URIURIを参照するルート\SubFolder\Page2.xaml、参照は、次のような相対パックを使用できますURIURIします。If Page1.xaml contains a URIURI that references Root\SubFolder\Page2.xaml, the reference can use the following relative pack URIURI.

Page2.xaml

Page1.xaml が含まれている場合、URIURIを参照するルート\Page2.xaml、参照は、次のような相対パックを使用できますURIURIします。If Page1.xaml contains a URIURI that references Root\Page2.xaml, the reference can use the following relative pack URIURI.

/Page2.xaml

パック URI の解決Pack URI Resolution

パックの形式URIURIs可能パックURIURIsさまざまな種類のファイルを同じになります。The format of pack URIURIs makes it possible for pack URIURIs for different types of files to look the same. たとえば、次のような絶対パックURIURIします。For example, consider the following absolute pack URIURI.

pack://application:,,,/ResourceOrContentFile.xaml

この絶対パックURIURIでした、ローカル アセンブリにリソース ファイルまたはコンテンツ ファイルを参照してください。This absolute pack URIURI could refer to either a resource file in the local assembly or a content file. これは次の相対当てはまりますURIURIします。The same is true for the following relative URIURI.

/ResourceOrContentFile.xaml

決定するために、ファイルの種類をパックURIURIが参照するWPFWPF解決URIURIsローカル アセンブリと、次のヒューリスティックを使用して、コンテンツ ファイルのリソース ファイルの。In order to determine the type of file that a pack URIURI refers to, WPFWPF resolves URIURIs for resource files in local assemblies and content files by using the following heuristics:

  1. プローブのアセンブリのメタデータ、 AssemblyAssociatedContentFileAttribute 、パックと一致する属性URIURIします。Probe the assembly metadata for an AssemblyAssociatedContentFileAttribute attribute that matches the pack URIURI.

  2. 場合、AssemblyAssociatedContentFileAttribute属性が見つかると、パックのパスURIURIはコンテンツ ファイルを参照します。If the AssemblyAssociatedContentFileAttribute attribute is found, the path of the pack URIURI refers to a content file.

  3. 場合、AssemblyAssociatedContentFileAttribute属性が見つからない場合は、ローカル アセンブリにコンパイルされる設定リソース ファイルをプローブします。If the AssemblyAssociatedContentFileAttribute attribute is not found, probe the set resource files that are compiled into the local assembly.

  4. 場合、パックのパスに一致するリソース ファイルURIURIが見つかると、パックのパスURIURIはリソース ファイルを参照します。If a resource file that matches the path of the pack URIURI is found, the path of the pack URIURI refers to a resource file.

  5. リソースが見つからない場合、内部で作成されたUriが無効です。If the resource is not found, the internally created Uri is invalid.

URIURI 解決は適用されないURIURIsするには、次を参照してください。 resolution does not apply for URIURIs that refer to the following:

  • 参照されたアセンブリ内のコンテンツ ファイル: では、これらのファイルの種類はサポートされていないWPFWPFします。Content files in referenced assemblies: these file types are not supported by WPFWPF.

  • 参照されたアセンブリ内の埋め込みファイル:URIURIsこれらを識別する参照アセンブリの名前の両方を含めるためには、一意と;componentサフィックス。Embedded files in referenced assemblies: URIURIs that identify them are unique because they include both the name of the referenced assembly and the ;component suffix.

  • 起点サイト ファイル:URIURIsこれらを識別するパックによって識別できるファイルのみであるために、固有URIURIsを含む、siteoforigin:///オーソリティします。Site of origin files: URIURIs that identify them are unique because they are the only files that can be identified by pack URIURIs that contain the siteoforigin:/// authority.

パックの 1 つの単純化URIURI解決によって、リソースやコンテンツ ファイルの場所に依存するコードです。One simplification that pack URIURI resolution allows is for code to be somewhat independent of the locations of resource and content files. たとえば、コンテンツ ファイルをパックするように再構成するローカル アセンブリ内のリソース ファイルがある場合URIURIは、パックを使用するコードも同じですが、リソースはURIURIします。For example, if you have a resource file in the local assembly that is reconfigured to be a content file, the pack URIURI for the resource remains the same, as does the code that uses the pack URIURI.

パック URI を使用したプログラミングProgramming with Pack URIs

多くWPFWPFパックで設定できるプロパティを実装するクラスURIURIsなど。Many WPFWPF classes implement properties that can be set with pack URIURIs, including:

これらのプロパティは、マークアップとコードのどちらからでも設定できます。These properties can be set from both markup and code. このセクションでは、両方の基本構造について説明してから、一般的なシナリオの例を示します。This section demonstrates the basic constructions for both and then shows examples of common scenarios.

マークアップでのパック URI の使用Using Pack URIs in Markup

パックURIURI、パックを使用して属性の要素を設定してマークアップで指定URIURIします。A pack URIURI is specified in markup by setting the element of an attribute with the pack URIURI. 例えば:For example:

<element attribute="pack://application:,,,/File.xaml" />

表 1 は、さまざまな絶対パックを示しています。URIURIsマークアップで指定することができます。Table 1 illustrates the various absolute pack URIURIs that you can specify in markup.

表 1: マークアップでの絶対パック URITable 1: Absolute Pack URIs in Markup

ファイルFile 絶対パック URIURIAbsolute pack URIURI
リソース ファイル - ローカル アセンブリResource file - local assembly "pack://application:,,,/ResourceFile.xaml"
サブフォルダー内のリソース ファイル - ローカル アセンブリResource file in subfolder - local assembly "pack://application:,,,/Subfolder/ResourceFile.xaml"
リソース ファイル - 参照アセンブリResource file - referenced assembly "pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml"
参照アセンブリのサブフォルダー内のリソース ファイルResource file in subfolder of referenced assembly "pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
バージョン管理された参照アセンブリ内のリソース ファイルResource file in versioned referenced assembly "pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml"
コンテンツ ファイルContent file "pack://application:,,,/ContentFile.xaml"
サブフォルダー内のコンテンツ ファイルContent file in subfolder "pack://application:,,,/Subfolder/ContentFile.xaml"
起点サイト ファイルSite of origin file "pack://siteoforigin:,,,/SOOFile.xaml"
サブフォルダー内の起点サイト ファイルSite of origin file in subfolder "pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

表 2 は、さまざまな相対パックを示しています。URIURIsマークアップで指定することができます。Table 2 illustrates the various relative pack URIURIs that you can specify in markup.

表 2: マークアップでの相対パック URITable 2: Relative Pack URIs in Markup

ファイルFile 相対パック URIURIRelative pack URIURI
ローカル アセンブリ内のリソース ファイルResource file in local assembly "/ResourceFile.xaml"
ローカル アセンブリのサブフォルダー内のリソース ファイルResource file in subfolder of local assembly "/Subfolder/ResourceFile.xaml"
参照アセンブリ内のリソース ファイルResource file in referenced assembly "/ReferencedAssembly;component/ResourceFile.xaml"
参照アセンブリのサブフォルダー内のリソース ファイルResource file in subfolder of referenced assembly "/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
コンテンツ ファイルContent file "/ContentFile.xaml"
サブフォルダー内のコンテンツ ファイルContent file in subfolder "/Subfolder/ContentFile.xaml"

コードでのパック URI の使用Using Pack URIs in Code

パックを指定するURIURIをインスタンス化するコードの中で、Uriクラスと、パックを渡すURIURIコンス トラクターにパラメーターとして。You specify a pack URIURI in code by instantiating the Uri class and passing the pack URIURI as a parameter to the constructor. このコード例を次に示します。This is demonstrated in the following example.

Uri uri = new Uri("pack://application:,,,/File.xaml");  

既定で、Uriクラスが考慮パックURIURIsを絶対です。By default, the Uri class considers pack URIURIs to be absolute. インスタンスとその結果、例外が発生、Uri相対パックのクラスが作成されるURIURIします。Consequently, an exception is raised when an instance of the Uri class is created with a relative pack URIURI.

Uri uri = new Uri("/File.xaml");  

幸いにも、Uri(String, UriKind)のオーバー ロード、Uriクラスのコンス トラクターが型のパラメーターを受け取るUriKind指定することを許可するかどうか、パックURIURIが絶対か相対。Fortunately, the Uri(String, UriKind) overload of the Uri class constructor accepts a parameter of type UriKind to allow you to specify whether a pack URIURI is either absolute or relative.

// Absolute URI (default)  
Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute);  
// Relative URI  
Uri relativeUri = new Uri("/File.xaml",   
                        UriKind.Relative);  

のみを指定する必要がありますAbsoluteまたはRelativeが特定される、指定されたパックURIURIはどちらか一方です。You should specify only Absolute or Relative when you are certain that the provided pack URIURI is one or the other. パックの種類がわからない場合URIURIなど、ユーザーがパッケージに入ったとき、使用されるURIURI、実行時に使用RelativeOrAbsolute代わりにします。If you don't know the type of pack URIURI that is used, such as when a user enters a pack URIURI at run time, use RelativeOrAbsolute instead.

// Relative or Absolute URI provided by user via a text box  
TextBox userProvidedUriTextBox = new TextBox();  
Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);  

表 3 は、さまざまな相対パックを示しています。URIURIsを使用してコードで指定できるSystem.Uriします。Table 3 illustrates the various relative pack URIURIs that you can specify in code by using System.Uri.

表 3: コードでの絶対パック URITable 3: Absolute Pack URIs in Code

ファイルFile 絶対パック URIURIAbsolute pack URIURI
リソース ファイル - ローカル アセンブリResource file - local assembly Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);
サブフォルダー内のリソース ファイル - ローカル アセンブリResource file in subfolder - local assembly Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);
リソース ファイル - 参照アセンブリResource file - referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);
参照アセンブリのサブフォルダー内のリソース ファイルResource file in subfolder of referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);
バージョン管理された参照アセンブリ内のリソース ファイルResource file in versioned referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);
コンテンツ ファイルContent file Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);
サブフォルダー内のコンテンツ ファイルContent file in subfolder Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);
起点サイト ファイルSite of origin file Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
サブフォルダー内の起点サイト ファイルSite of origin file in subfolder Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

表 4 は、さまざまな相対パックを示しています。URIURIsを使用してコードで指定できるSystem.Uriします。Table 4 illustrates the various relative pack URIURIs that you can specify in code using System.Uri.

表 4: コードでの相対パック URITable 4: Relative Pack URIs in Code

ファイルFile 相対パック URIURIRelative pack URIURI
リソース ファイル - ローカル アセンブリResource file - local assembly Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);
サブフォルダー内のリソース ファイル - ローカル アセンブリResource file in subfolder - local assembly Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
リソース ファイル - 参照アセンブリResource file - referenced assembly Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);
サブフォルダー内のリソース ファイル - 参照アセンブリResource file in subfolder - referenced assembly Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);
コンテンツ ファイルContent file Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);
サブフォルダー内のコンテンツ ファイルContent file in subfolder Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

一般的なパック URI のシナリオCommon Pack URI Scenarios

前のセクションでは、パックを作成する方法を説明してURIURIsリソース、コンテンツ、および起点サイト ファイルを識別するためにします。The preceding sections have discussed how to construct pack URIURIs to identify resource, content, and site of origin files. WPFWPFさまざまな方法でこのような構築を使用し、次のセクションでは、いくつかの一般的な使用法をについて説明します。In WPFWPF, these constructions are used in a variety of ways, and the following sections cover several common usages.

アプリケーションの起動時に表示する UI の指定Specifying the UI to Show When an Application Starts

StartupUri 1 つ目を指定しますUIUIに表示する、WPFWPFアプリケーションが起動します。StartupUri specifies the first UIUI to show when a WPFWPF application is launched. スタンドアロン アプリケーションの場合、UIUI次の例に示すように、ウィンドウにすることができます。For standalone applications, the UIUI can be a window, as shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="MainWindow.xaml" />

スタンドアロン アプリケーションとXAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs)次の例に示すように、最初の UI としてページを指定もできます。Standalone applications and XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) can also specify a page as the initial UI, as shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml" />

かどうか、アプリケーションは、スタンドアロン アプリケーションと、ページを指定したStartupUriWPFWPF開きます、NavigationWindowページをホストします。If the application is a standalone application and a page is specified with StartupUri, WPFWPF opens a NavigationWindow to host the page. XBAPXBAPsページは、ホスト ブラウザーに表示します。For XBAPXBAPs, the page is shown in the host browser.

次の例は、ページにナビゲートする方法を示しています。The following example shows how to navigate to a page.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  WindowTitle="Page With Hyperlink"
  WindowWidth="250"
  WindowHeight="250">
<Hyperlink NavigateUri="UriOfPageToNavigateTo.xaml">
  Navigate to Another Page
</Hyperlink>
</Page>

内で移動するさまざまな方法の詳細についてはWPFWPFを参照してくださいナビゲーションの概要します。For more information on the various ways to navigate in WPFWPF, see Navigation Overview.

ウィンドウ アイコンの指定Specifying a Window Icon

次の例は、URI を使用してウィンドウのアイコンを指定する方法を示しています。The following example shows how to use a URI to specify a window's icon.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.MainWindow"
    Icon="WPFIcon1.ico">
</Window>

詳細については、「Icon」を参照してください。For more information, see Icon.

イメージ ファイル、オーディオ ファイル、およびビデオ ファイルの読み込みLoading Image, Audio, and Video Files

WPFWPF により、アプリケーションを使用して、さまざまなメディアの種類、これらはすべてを識別してパックに読み込まれるURIURIs次の例のようにします。 allows applications to use a wide variety of media types, all of which can be identified and loaded with pack URIURIs, as shown in the following examples.

<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/bee.wmv" />
<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/ringin.wav" />
<Image Source="Images/Watermark.png" />

メディア コンテンツの操作方法の詳細については、次を参照してください。グラフィックスとマルチ メディアします。For more information on working with media content, see Graphics and Multimedia.

起点サイトからのリソース ディクショナリの読み込みLoading a Resource Dictionary from the Site of Origin

リソース ディクショナリ (ResourceDictionary) アプリケーションのテーマをサポートするために使用できます。Resource dictionaries (ResourceDictionary) can be used to support application themes. テーマを作成し、管理する方法の 1 つは、複数のテーマをリソース ディクショナリとして作成して、アプリケーションの起点サイトに配置することです。One way to create and manage themes is to create multiple themes as resource dictionaries that are located at an application's site of origin. これにより、アプリケーションを再コンパイルして再配置しなくても、テーマの追加と交信が可能です。This allows themes to be added and updated without recompiling and redeploying an application. これらのリソース ディクショナリを特定でき、pack を使用して読み込むURIURIs、次の例を示します。These resource dictionaries can be identified and loaded using pack URIURIs, which is shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml">
  <Application.Resources>
    <ResourceDictionary Source="pack://siteoforigin:,,,/PageTheme.xaml" />
  </Application.Resources>
</Application>

テーマの概要についてWPFWPFを参照してくださいスタイルとテンプレートします。For an overview of themes in WPFWPF, see Styling and Templating.

関連項目See Also

WPF アプリケーションのリソース ファイル、コンテンツ ファイル、およびデータ ファイルWPF Application Resource, Content, and Data Files