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://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.

これらの種類のファイルにアクセスするWPFWPF機関の 2 つのサポート: アプリケーション:///および 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 is 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それらを識別するパックで指定できるファイルのみであるために、固有URIURIssiteoforigin が含まれている:///機関です。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 最初の指定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. これらのリソース ディクショナリは、識別し、パックを使用して読み込まれた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