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さまざまなシナリオでパックを作成する方法について説明します。また、両方URIURIsのマークアップからパックを使用する方法を説明する前に、絶対と相対URIURIsおよびURIURI解決方法について説明します。コードを記述します。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 パッケージング規則(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.

パッケージとパーツのダイアグラム

パーツを識別するために、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、および file は、よく知られている例です。The scheme that is specified by a URIURI is defined by its prefix; http, ftp, and file are well-known examples. パックURIURIスキームは、スキームとして "pack" を使用し、authority と path という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/パスpack://authority/path

Authorityは、パーツが含まれているパッケージの種類を指定し、パスはパッケージ内のパーツの場所を指定します。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:

パッケージ、権限、およびパスの間のリレーションシップ

パッケージとパーツは、アプリケーションとファイルに似ています。つまり、アプリケーション (パッケージ) は、次のような 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するために、では application:///と siteoforigin:///の2つの機関がサポートされています。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.

Pack URI のダイアグラム

注意

パック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

リソースファイルは MSBuild Resource項目として構成され、アセンブリにコンパイルされます。Resource files are configured as MSBuild Resource items and are compiled into assemblies. WPF は、ローカルアセンブリにコンパイルされるか、ローカルアセンブリから参照されるアセンブリにコンパイルされるリソースファイルを識別するために使用できる、パック Uri の構築をサポートしています。WPF supports the construction of pack URIs 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.

次の例は、ローカルURIURIアセンブリのXAMLXAMLプロジェクトフォルダーのルートにあるリソースファイルのパックを示しています。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

次の例は、ローカルURIURIアセンブリのXAMLXAMLプロジェクトフォルダーのサブフォルダーにあるリソースファイルのパックを示しています。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{ ;バージョン] { ;PublicKey]、コンポーネント/パス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.

次の例は、参照URIURIアセンブリのXAMLXAMLプロジェクトフォルダーのルートにあるリソースファイルのパックを示しています。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

次の例は、参照URIURIアセンブリのXAMLXAMLプロジェクトフォルダーのサブフォルダーにあるリソースファイルのパックを示しています。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

次の例は、参照URIURIされXAMLXAMLているバージョン固有のアセンブリのプロジェクトフォルダーのルートフォルダーにあるリソースファイルのパックを示しています。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リソースファイルのパック構文は、application:///authority でのみ使用できます。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.

次の例は、実行URIURI可能アセンブリXAMLXAMLと同じフォルダーにあるコンテンツファイルのパックを示しています。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

次の例は、アプリケーションURIURIの実行XAMLXAML可能アセンブリに対して相対的なサブフォルダーにあるコンテンツファイルのパックを示しています。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

注意

HTML コンテンツファイルに移動することはできません。HTML content files cannot be navigated to. スキームURIURIでは、起点サイトにある HTML ファイルへの移動のみがサポートされます。The URIURI scheme only supports navigation to HTML 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.

次の例は、実行URIURI可能アセンブリXAMLXAMLの起動元の場所に格納されている、起点サイトファイルのパックを示しています。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

次の例は、アプリケーションURIURIの実行XAMLXAML可能アセンブリの起動元の場所を基準としたサブフォルダーに格納されている、起点サイトファイルのパックを示しています。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

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

通常、MSBuild XAMLXAML Page項目として構成されるファイルの種類は、次のいずれかのルート要素となります。The types of XAMLXAML files that are commonly configured as MSBuildPage 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 にルート \SubFolder\Page2.xaml を参照URIURIするが含まれている場合、参照は次の相対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 がルートページを参照URIURIするを含んでいる場合、参照は次の相対パック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. 属性が見つかった場合、パックURIURIのパスはコンテンツファイルを参照します。 AssemblyAssociatedContentFileAttributeIf the AssemblyAssociatedContentFileAttribute attribute is found, the path of the pack URIURI refers to a content file.

  3. AssemblyAssociatedContentFileAttribute属性が見つからない場合は、ローカルアセンブリにコンパイルされる set リソースファイルを調べます。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.

  • 起点サイトファイル: siteoforigin:/// URIURIs機関を含むパックURIURIsによって識別できる唯一のファイルであるため、一意であることがわかります。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.

パックURIURIの解決方法の1つとして、コードがリソースファイルとコンテンツファイルの場所から多少独立していることが挙げられます。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は、パッケージの属性の要素を設定します。URIURIA 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されたときに表示する最初のを指定します。 WPFWPFStartupUri 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" />

アプリケーションがスタンドアロンアプリケーションであり、でStartupUriページが指定されている場合、 WPFWPFはを開き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示すように、pack を使用して識別および読み込むことができます。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