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

Microsoft WindowsMicrosoft Windows データを含む実行可能でないなどのファイルに多くの場合、依存するアプリケーションExtensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)イメージ、ビデオ、およびオーディオです。 applications often depend on files that contain non-executable data, such as Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML), images, video, and audio. Windows Presentation Foundation (WPF) は、構成、識別、およびこれらの種類のアプリケーションのデータ ファイルと呼ばれる、データ ファイルを使用して特別なサポートを提供します。Windows Presentation Foundation (WPF) offers special support for configuring, identifying, and using these types of data files, which are called application data files. このサポートの中心となるのは、次のような特定のアプリケーション データ ファイルの種類のセットです。This support revolves around a specific set of application data file types, including:

  • リソース ファイル: 実行可能ファイルまたはライブラリにコンパイルされるデータ ファイルWPFWPFアセンブリ。Resource Files: Data files that are compiled into either an executable or library WPFWPF assembly.

  • コンテンツ ファイル: スタンドアロンのデータ ファイルを実行可能ファイルとの明示的な関連付けを持つWPFWPFアセンブリ。Content Files: Standalone data files that have an explicit association with an executable WPFWPF assembly.

  • 配信元のファイルのサイト: スタンドアロンのデータ ファイルを実行可能ファイルとの関連付けを持たないWPFWPFアセンブリ。Site of Origin Files: Standalone data files that have no association with an executable WPFWPF assembly.

これらの 3 種類のファイルの重要な違いは、リソース ファイルとコンテンツ ファイルはビルド時に認識されるという点です。アセンブリは、これらを明確に認識します。One important distinction to make between these three types of files is that resource files and content files are known at build time; an assembly has explicit knowledge of them. 配信元のファイルのサイトのただし、アセンブリがあります認識したり、または暗黙的なナレッジ パックをUniform Resource Identifier (URI)uniform resource identifier (URI)参照。 後者の場合の元のファイルの参照先のサイトが実際に存在するという保証はありません。For site of origin files, however, an assembly may have no knowledge of them at all, or implicit knowledge through a pack Uniform Resource Identifier (URI)uniform resource identifier (URI) reference; the case of the latter, there is no guarantee that the referenced site of origin file actually exists.

Windows Presentation Foundation (WPF) が、パックを使用するにはアプリケーションのデータ ファイルを参照するには、Uniform Resource Identifier (URI)uniform resource identifier (URI)で詳しく説明されているスキームWPF のパック Uri)。To reference application data files, Windows Presentation Foundation (WPF) uses the Pack Uniform Resource Identifier (URI)uniform resource identifier (URI) Scheme, which is described in detail in Pack URIs in WPF).

このトピックでは、アプリケーション データ ファイルを構成および使用する方法について説明します。This topic describes how to configure and use application data files.

リソース ファイル (Visual Studio)Resource Files

アプリケーション データ ファイルを常にアプリケーションで使用可能にするには、コンパイルしてアプリケーションのメイン実行可能アセンブリまたはその参照アセンブリの 1 つに組み込む必要があります。If an application data file must always be available to an application, the only way to guarantee availability is to compile it into an application's main executable assembly or one of its referenced assemblies. この種類のアプリケーション データ ファイルと呼ばれる、リソース ファイルです。This type of application data file is known as a resource file.

リソース ファイルは、次のときに使用します。You should use resource files when:

  • コンパイルしてアセンブリに組み込んだ後に、リソース ファイルのコンテンツを更新する必要がない。You don't need to update the resource file's content after it is compiled into an assembly.

  • ファイルの依存関係の数を減らして、アプリケーション配布の複雑さを軽減する必要がある。You want to simplify application distribution complexity by reducing the number of file dependencies.

  • アプリケーション データ ファイルをローカライズする必要があります (を参照してくださいWPF のグローバリゼーションおよびローカリゼーションの概要)。Your application data file needs to be localizable (see WPF Globalization and Localization Overview).

注意

このセクションで説明されているリソース ファイルは、リソース ファイルの記載と異なるXAML リソースしで説明されている埋め込みまたはリンクされたリソースとは異なるを管理するアプリケーションのリソース (.NET).The resource files described in this section are different than the resource files described in XAML Resources and different than the embedded or linked resources described in Managing Application Resources (.NET).

リソース ファイルの構成Configuring Resource Files

WPFWPF、リソース ファイルに含まれているファイルとは、Microsoft Build Engine (MSBuild)Microsoft build engine (MSBuild)としてプロジェクト、Resource項目。In WPFWPF, a resource file is a file that is included in an Microsoft Build Engine (MSBuild)Microsoft build engine (MSBuild) project as a Resource item.

<Project "xmlns=http://schemas.microsoft.com/developer/msbuild/2003" ... >  
  ...  
  <ItemGroup>  
    <Resource Include="ResourceFile.xaml" />  
  </ItemGroup>  
  ...  
</Project>  

注意

Microsoft Visual StudioMicrosoft Visual Studio、ファイルをプロジェクトの設定を追加して、リソース ファイルを作成するそのBuild ActionResourceです。In Microsoft Visual StudioMicrosoft Visual Studio, you create a resource file by adding a file to a project and setting its Build Action to Resource.

プロジェクトのビルド時にMSBuildMSBuildアセンブリにリソースをコンパイルします。When the project is built, MSBuildMSBuild compiles the resource into the assembly.

リソース ファイルの使用Using Resource Files

リソース ファイルを読み込むには、呼び出すことができます、GetResourceStreamのメソッド、Applicationを渡して、パックURIURI目的のリソース ファイルを識別します。To load a resource file, you can call the GetResourceStream method of the Application class, passing a pack URIURI that identifies the desired resource file. GetResourceStream 返します、StreamResourceInfoとして、リソース ファイルを公開するオブジェクト、Streamとそのコンテンツの種類について説明します。GetResourceStream returns a StreamResourceInfo object, which exposes the resource file as a Stream and describes its content type.

たとえば、次のコードが使用する方法を示しますGetResourceStreamを読み込む、Pageリソース ファイルのコンテンツとして設定し、 Frame (pageFrame)。As an example, the following code shows how to use GetResourceStream to load a Page resource file and set it as the content of a Frame (pageFrame):

// Navigate to xaml page
Uri uri = new Uri("/PageResourceFile.xaml", UriKind.Relative);
StreamResourceInfo info = Application.GetResourceStream(uri);
System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();
Page page = (Page)reader.LoadAsync(info.Stream);
this.pageFrame.Content = page;
' Navigate to xaml page
Dim uri As New Uri("/PageResourceFile.xaml", UriKind.Relative)
Dim info As StreamResourceInfo = Application.GetResourceStream(uri)
Dim reader As New System.Windows.Markup.XamlReader()
Dim page As Page = CType(reader.LoadAsync(info.Stream), Page)
Me.pageFrame.Content = page

呼び出し中にGetResourceStreamにアクセスすること、Streamを設定します、プロパティの型への変換の追加の作業を実行する必要があります。While calling GetResourceStream gives you access to the Stream, you need to perform the additional work of converting it to the type of the property that you'll be setting it with. 代わりに、できるWPFWPFの開始タグと変換するように注意、Stream直接コードを使用して型のプロパティにリソース ファイルを読み込む。Instead, you can let WPFWPF take care of opening and converting the Stream by loading a resource file directly into the property of a type using code.

次の例を読み込む方法を示しています、Pageに直接、 Frame (pageFrame) コードを使用します。The following example shows how to load a Page directly into a Frame (pageFrame) using code.

Uri pageUri = new Uri("/PageResourceFile.xaml", UriKind.Relative);
this.pageFrame.Source = pageUri;
Dim pageUri As New Uri("/PageResourceFile.xaml", UriKind.Relative)
Me.pageFrame.Source = pageUri

次の例は、上の例と同じ意味のマークアップです。The following example is the markup equivalent of the preceding example.

<Frame Name="pageFrame" Source="PageResourceFile.xaml" />

リソース ファイルとしてのアプリケーション コード ファイルApplication Code Files as Resource Files

特殊な一連のWPFWPFパックを使用してアプリケーション コード ファイルを参照できるURIURIswindows、ページ、フロー ドキュメントのリソース ディクショナリなど、します。A special set of WPFWPF application code files can be referenced using pack URIURIs, including windows, pages, flow documents, and resource dictionaries. たとえば、設定、Application.StartupUriのパック プロパティURIURIウィンドウまたはアプリケーションの起動時にロードしたいページを参照します。For example, you can set the Application.StartupUri property with a pack URIURI that references the window or page that you would like to load when an application starts.

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

場合に、このを行うことができます、XAMLXAMLでファイルが含まれています、Microsoft Build Engine (MSBuild)Microsoft build engine (MSBuild)としてプロジェクト、Page項目。You can do this when a XAMLXAML file is included in an Microsoft Build Engine (MSBuild)Microsoft build engine (MSBuild) project as a Page item.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ... >  
  ...  
  <ItemGroup>  
    <Page Include="MainWindow.xaml" />  
  </ItemGroup>  
  ...  
</Project>  

注意

Visual StudioVisual Studio、追加WindowNavigationWindowPageFlowDocument、またはResourceDictionary、プロジェクトに、Build Actionマークアップのファイルは既定でPageです。In Visual StudioVisual Studio, you add a new Window, NavigationWindow, Page, FlowDocument, or ResourceDictionary to a project, the Build Action for the markup file will default to Page.

ときに使用したプロジェクトのPage項目をコンパイルすると、XAMLXAML項目がバイナリ形式に変換され、関連するアセンブリにコンパイルします。When a project with Page items is compiled, the XAMLXAML items are converted to binary format and compiled into the associated assembly. したがって、これらのファイルは、通常のリソース ファイルと同様に使用できます。Consequently, these files can be used in the same way as typical resource files.

注意

場合、XAMLXAMLとしてファイルが構成されている、Resource項目、および生の分離コード ファイルがないXAMLXAMLは生のバイナリのバージョンではなく、アセンブリにコンパイルされてXAMLXAMLです。If a XAMLXAML file is configured as a Resource item, and does not have a code-behind file, the raw XAMLXAML is compiled into an assembly rather than a binary version of the raw XAMLXAML.

コンテンツ ファイルContent Files

Aコンテンツ ファイルと共に実行可能アセンブリの loose ファイルとして配布されます。A content file is distributed as a loose file alongside an executable assembly. コンテンツ ファイルはコンパイルされてアセンブリに組み込まれるのではありませんが、アセンブリのコンパイル時に、各コンテンツ ファイルとの関連付けを確立するメタデータが使用されます。Although they are not compiled into an assembly, assemblies are compiled with metadata that establishes an association with each content file.

アプリケーションに必要な特定のアプリケーション データ ファイルのセットが更新されても、そのファイルを使用するアセンブリを再コンパイルせずに、コンテンツ ファイルを使用する必要があります。You should use content files when your application requires a specific set of application data files that you want to be able to update without recompiling the assembly that consumes them.

コンテンツ ファイルの構成Configuring Content Files

プロジェクトにコンテンツ ファイルを追加するには、アプリケーション データ ファイルとして含まれているにする必要があります、Content項目。To add a content file to a project, an application data file must be included as a Content item. さらに、コンテンツ ファイルがアセンブリに直接コンパイルされていないために設定する必要が、 MSBuildMSBuild CopyToOutputDirectoryメタデータを指定する要素、コンテンツ ファイルがビルドされたアセンブリに対応する場所にコピーします。Furthermore, because a content file is not compiled directly into the assembly, you need to set the MSBuildMSBuildCopyToOutputDirectory metadata element to specify that the content file is copied to a location that is relative to the built assembly. プロジェクトがビルドされるたびに、ビルド出力フォルダーにコピーするリソースに該当する場合は、設定する、CopyToOutputDirectoryメタデータ要素で、Always値。If you want the resource to be copied to the build output folder every time a project is built, you set the CopyToOutputDirectory metadata element with the Always value. 使用して、ビルド出力フォルダーに、リソースの最新のバージョンのみがコピーされることを確認するそれ以外の場合、PreserveNewest値。Otherwise, you can ensure that only the newest version of the resource is copied to the build output folder by using the PreserveNewest value.

次に示すファイルは、新しいバージョンのリソースがプロジェクトに追加された場合にのみビルド出力フォルダーにコピーされるコンテンツ ファイルとして構成されています。The following shows a file that is configured as a content file which is copied to the build output folder only when a new version of the resource is added to the project.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ... >  
  ...  
  <ItemGroup>  
    <Content Include="ContentFile.xaml">  
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>  
    </Content>  
  </ItemGroup>  
  ...  
</Project>  

注意

Visual StudioVisual Studio、ファイルをプロジェクトの設定を追加して、コンテンツ ファイルを作成するそのBuild ActionContent、設定とそのCopy to Output DirectoryCopy always(と同じAlways) およびCopy if newer(と同じPreserveNewest)。In Visual StudioVisual Studio, you create a content file by adding a file to a project and setting its Build Action to Content, and set its Copy to Output Directory to Copy always (same as Always) and Copy if newer (same as PreserveNewest).

プロジェクトのビルド時に、AssemblyAssociatedContentFileAttribute属性は各コンテンツ ファイルのアセンブリのメタデータにコンパイルします。When the project is built, an AssemblyAssociatedContentFileAttribute attribute is compiled into the metadata of the assembly for each content file.

[assembly: AssemblyAssociatedContentFile("ContentFile.xaml")]

値、AssemblyAssociatedContentFileAttributeプロジェクト内の位置に対してコンテンツのファイルへのパスを意味します。The value of the AssemblyAssociatedContentFileAttribute implies the path to the content file relative to its position in the project. たとえば、ある場合は、コンテンツ ファイルがプロジェクトのサブフォルダーに、追加パス情報に組み込む、AssemblyAssociatedContentFileAttribute値。For example, if a content file was located in a project subfolder, the additional path information would be incorporated into the AssemblyAssociatedContentFileAttribute value.

[assembly: AssemblyAssociatedContentFile("Resources/ContentFile.xaml")]

AssemblyAssociatedContentFileAttribute値もビルド出力フォルダー内のコンテンツのファイルへのパスの値。The AssemblyAssociatedContentFileAttribute value is also the value of the path to the content file in the build output folder.

コンテンツ ファイルの使用Using Content Files

コンテンツ ファイルを読み込むには、呼び出すことができます、GetContentStreamのメソッド、Applicationを渡して、パックURIURI目的のコンテンツ ファイルを識別します。To load a content file, you can call the GetContentStream method of the Application class, passing a pack URIURI that identifies the desired content file. GetContentStream 返します、StreamResourceInfoとして、コンテンツ ファイルを公開するオブジェクト、Streamとそのコンテンツの種類について説明します。GetContentStream returns a StreamResourceInfo object, which exposes the content file as a Stream and describes its content type.

たとえば、次のコードが使用する方法を示しますGetContentStreamを読み込む、Pageファイルのコンテンツのコンテンツとして設定し、 Frame (pageFrame)。As an example, the following code shows how to use GetContentStream to load a Page content file and set it as the content of a Frame (pageFrame).

// Navigate to xaml page
Uri uri = new Uri("/PageContentFile.xaml", UriKind.Relative);
StreamResourceInfo info = Application.GetContentStream(uri);
System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();
Page page = (Page)reader.LoadAsync(info.Stream);
this.pageFrame.Content = page;
' Navigate to xaml page
Dim uri As New Uri("/PageContentFile.xaml", UriKind.Relative)
Dim info As StreamResourceInfo = Application.GetContentStream(uri)
Dim reader As New System.Windows.Markup.XamlReader()
Dim page As Page = CType(reader.LoadAsync(info.Stream), Page)
Me.pageFrame.Content = page

呼び出し中にGetContentStreamにアクセスすること、Streamを設定します、プロパティの型への変換の追加の作業を実行する必要があります。While calling GetContentStream gives you access to the Stream, you need to perform the additional work of converting it to the type of the property that you'll be setting it with. 代わりに、できるWPFWPFの開始タグと変換するように注意、Stream直接コードを使用して型のプロパティにリソース ファイルを読み込む。Instead, you can let WPFWPF take care of opening and converting the Stream by loading a resource file directly into the property of a type using code.

次の例を読み込む方法を示しています、Pageに直接、 Frame (pageFrame) コードを使用します。The following example shows how to load a Page directly into a Frame (pageFrame) using code.

Uri pageUri = new Uri("/PageContentFile.xaml", UriKind.Relative);
this.pageFrame.Source = pageUri;
Dim pageUri As New Uri("/PageContentFile.xaml", UriKind.Relative)
Me.pageFrame.Source = pageUri

次の例は、上の例と同じ意味のマークアップです。The following example is the markup equivalent of the preceding example.

<Frame Name="pageFrame" Source="PageContentFile.xaml" />

起点サイト ファイルSite of Origin Files

リソース ファイルがによって定義された、と共に配布されるアセンブリとの明示的なリレーションシップを持つ、AssemblyAssociatedContentFileAttributeです。Resource files have an explicit relationship with the assemblies that they are distributed alongside, as defined by the AssemblyAssociatedContentFileAttribute. ただし、アセンブリとアプリケーション データ ファイル間に暗黙的な関係を持たせる、または関係を持たせない場合があります。たとえば次のような場合です。But, there are times when you may want to establish either an implicit or non-existent relationship between an assembly and an application data file, including when:

  • コンパイル時にファイルが存在しない場合。A file doesn't exist when at compile time.

  • アセンブリが必要とするファイルが、実行時までわからない場合。You don't know what files your assembly will require until run time.

  • 関連付けられているアセンブリを再コンパイルせずにファイルを更新可能にする場合。You want to be able to update files without recompiling the assembly that they are associated with.

  • オーディオやビデオなど大容量のデータ ファイルを使用するアプリケーションで、ユーザーが選択した場合にのみファイルをダウンロードする場合。Your application uses large data files, such as audio and video, and you only want users to download them if they choose to.

これらの種類を使用して従来のファイルの読み込みが可能であるURIURIfile:/// http:// 方式などのスキーム。It is possible to load these types of files by using traditional URIURI schemes, such as the file:/// and http:// schemes.

<Image Source="file:///C:/DataFile.bmp" />
<Image Source="http://www.datafilewebsite.com/DataFile.bmp" />

ただし、file:/// スキームや http:// スキームを使用する場合は、アプリケーションに完全信頼が必要です。However, the file:/// and http:// schemes require your application to have full trust. アプリケーションの場合、XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP)ですが、インターネットまたはイントラネットから起動して、ルース ファイルしか読み込めません原点 (アプリケーションのサイトからこれらの場所から起動したアプリケーションで許可される権限のセットのみを要求場所の起動)。If your application is a XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP) that was launched from the Internet or intranet, and it requests only the set of permissions that are allowed for applications launched from those locations, loose files can only be loaded from the application's site of origin (launch location). このようなファイルと呼びます元のサイトファイル。Such files are known as site of origin files.

起点サイト ファイルは部分信頼アプリケーションの唯一のオプションですが、部分信頼アプリケーション以外でも使用できます。Site of origin files are the only option for partial trust applications, although are not limited to partial trust applications. 完全信頼アプリケーションでも、読み込むアプリケーション データ ファイルがビルド時点では不明な場合があります。完全信頼アプリケーションでは file:/// を使用できますが、アプリケーション データ ファイルがアプリケーション アセンブリと同じフォルダーにインストールされることも、サブフォルダーにインストールされることも考えられます。Full trust applications may still need to load application data files that they do not know about at build time; while full trust applications could use file:///, it is likely that the application data files will be installed in the same folder as, or a subfolder of, the application assembly. この場合は、起点サイト参照を使用する方が、file:/// を使用するよりも簡単です。file:/// を使用するには、ファイルの完全パスを指定する必要があるためです。In this case, using site of origin referencing is easier than using file:///, because using file:/// requires you to work out the full path the file.

注意

ファイルがキャッシュされていない元のサイト、XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP)をクライアント コンピューターは、コンテンツ ファイルの中でします。Site of origin files are not cached with an XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP) on a client machine, while content files are. したがって、起点サイト ファイルは明確に要求されたときにのみダウンロードされます。Consequently, they are only downloaded when specifically requested. 場合、XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP)アプリケーションが大規模なメディア ファイルをサイト元ファイルの初期のアプリケーションの起動がはるかに高速、および要求時にファイルのダウンロードのみの手段として構成することです。If an XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP) application has large media files, configuring them as site of origin files means the initial application launch is much faster, and the files are only downloaded on demand.

起点サイト ファイルの構成Configuring Site of Origin Files

従来の配置を使用する必要がある場合は、サイトの元のファイルの存在しないまたは不明なコンパイル時に、いずれかの使用など、実行時に、必要なファイルを確保するための機構を使用できます、XCopyコマンド ライン プログラムや、 Microsoft Windows インストーラーMicrosoft Windows Installer.If your site of origin files are non-existent or unknown at compile time, you need to use traditional deployment mechanisms for ensuring the required files are available at run time, including using either the XCopy command-line program or the Microsoft Windows インストーラーMicrosoft Windows Installer.

わかっている場合はコンパイル時にファイルを元のサイトに配置されるけれどもまだ明示的な依存関係を回避するにそれらのファイルを追加することができます、Microsoft Build Engine (MSBuild)Microsoft build engine (MSBuild)としてプロジェクトNone項目。If you do know at compile time the files that you would like to be located at the site of origin, but still want to avoid an explicit dependency, you can add those files to an Microsoft Build Engine (MSBuild)Microsoft build engine (MSBuild) project as None item. コンテンツのファイルで設定する必要がある、 MSBuildMSBuild CopyToOutputDirectory元のファイルのサイトがいずれかを指定することによってビルドされたアセンブリに対応する場所にコピーされていることを指定する属性、Always値またはPreserveNewest値。As with content files, you need to set the MSBuildMSBuildCopyToOutputDirectory attribute to specify that the site of origin file is copied to a location that is relative to the built assembly, by specifying either the Always value or the PreserveNewest value.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ... >  
  ...  
  <None Include="PageSiteOfOriginFile.xaml">  
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>  
  </None>  
  ...  
</Project>  

注意

Visual StudioVisual Studio、ファイルをプロジェクトの設定を追加して元のファイルのサイトを作成するそのBuild ActionNoneです。In Visual StudioVisual Studio, you create a site of origin file by adding a file to a project and setting its Build Action to None.

プロジェクトのビルド時にMSBuildMSBuildビルド出力フォルダーに指定されたファイルをコピーします。When the project is built, MSBuildMSBuild copies the specified files to the build output folder.

起点サイト ファイルの使用Using Site of Origin Files

元のファイルのサイトを読み込むには、呼び出すことができます、GetRemoteStreamのメソッド、Applicationを渡して、パックURIURI元のファイルの目的のサイトを識別します。To load a site of origin file, you can call the GetRemoteStream method of the Application class, passing a pack URIURI that identifies the desired site of origin file. GetRemoteStream 返します、StreamResourceInfoとして元のファイルのサイトを公開するオブジェクト、Streamとそのコンテンツの種類について説明します。GetRemoteStream returns a StreamResourceInfo object, which exposes the site of origin file as a Stream and describes its content type.

例として、次のコードが使用する方法を示しますGetRemoteStreamを読み込む、Page元のサイトのコンテンツとして設定し、ファイル、 Frame (pageFrame)。As an example, the following code shows how to use GetRemoteStream to load a Page site of origin file and set it as the content of a Frame (pageFrame).

// Navigate to xaml page
Uri uri = new Uri("/SiteOfOriginFile.xaml", UriKind.Relative);
StreamResourceInfo info = Application.GetRemoteStream(uri);
System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();
Page page = (Page)reader.LoadAsync(info.Stream);
this.pageFrame.Content = page;
' Navigate to xaml page
Dim uri As New Uri("/SiteOfOriginFile.xaml", UriKind.Relative)
Dim info As StreamResourceInfo = Application.GetRemoteStream(uri)
Dim reader As New System.Windows.Markup.XamlReader()
Dim page As Page = CType(reader.LoadAsync(info.Stream), Page)
Me.pageFrame.Content = page

呼び出し中にGetRemoteStreamにアクセスすること、Streamを設定します、プロパティの型への変換の追加の作業を実行する必要があります。While calling GetRemoteStream gives you access to the Stream, you need to perform the additional work of converting it to the type of the property that you'll be setting it with. 代わりに、できるWPFWPFの開始タグと変換するように注意、Stream直接コードを使用して型のプロパティにリソース ファイルを読み込む。Instead, you can let WPFWPF take care of opening and converting the Stream by loading a resource file directly into the property of a type using code.

次の例を読み込む方法を示しています、Pageに直接、 Frame (pageFrame) コードを使用します。The following example shows how to load a Page directly into a Frame (pageFrame) using code.

Uri pageUri = new Uri("pack://siteoforigin:,,,/SiteOfOriginFile.xaml", UriKind.Absolute);
this.pageFrame.Source = pageUri;
Dim pageUri As New Uri("pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml", UriKind.Absolute)
Me.pageFrame.Source = pageUri

次の例は、上の例と同じ意味のマークアップです。The following example is the markup equivalent of the preceding example.

<Frame Name="pageFrame" Source="pack://siteoforigin:,,,/SiteOfOriginFile.xaml" />

ビルドの種類を変更した後のリビルドRebuilding After Changing Build Type

アプリケーション データ ファイルのビルドの種類を変更した後は、変更を確実に反映するためにアプリケーション全体をリビルドする必要があります。After you change the build type of an application data file, you need to rebuild the entire application to ensure those changes are applied. アプリケーションのみをビルドしても、変更は適用されません。If you only build the application, the changes are not applied.

関連項目See Also

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