Archivos de recursos, contenido y datos de aplicaciones de WPFWPF Application Resource, Content, and Data Files

Microsoft WindowsMicrosoft Windows las aplicaciones a menudo dependen de los archivos que contienen datos no ejecutable, como Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML), imágenes, vídeo y audio.applications often depend on files that contain non-executable data, such as Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML), images, video, and audio. Windows Presentation Foundation (WPF) ofrece una compatibilidad especial para configurar, identificar y usar estos tipos de archivos de datos, que se denominan archivos de datos de aplicación.Windows Presentation Foundation (WPF) offers special support for configuring, identifying, and using these types of data files, which are called application data files. Esta compatibilidad gira en torno a un conjunto específico de tipos de archivo de datos de aplicación, entre los que se incluyen:This support revolves around a specific set of application data file types, including:

  • Archivos de recursos: Archivos de datos que se compilan en un archivo ejecutable o biblioteca WPFWPF ensamblado.Resource Files: Data files that are compiled into either an executable or library WPFWPF assembly.

  • Archivos de contenido: Archivos de datos independientes que tienen una asociación explícita con un archivo ejecutable WPFWPF ensamblado.Content Files: Standalone data files that have an explicit association with an executable WPFWPF assembly.

  • Sitio de archivos de origen: Archivos de datos independientes que no tienen ninguna asociación con un archivo ejecutable WPFWPF ensamblado.Site of Origin Files: Standalone data files that have no association with an executable WPFWPF assembly.

Una diferencia importante entre estos tres tipos de archivos es que tanto los archivos de recursos como los archivos de contenido se conocen en el momento de la compilación; un ensamblado tiene un conocimiento explícito de ellos.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. Para archivos de sitio de origen, sin embargo, un ensamblado puede tener ningún conocimiento de ellos, o un conocimiento implícito a través de un paquete identificador de recursos uniforme (URI)uniform resource identifier (URI) referencia; en el caso de que el último caso, no hay ninguna garantía de que el sitio del archivo de origen que se hace referencia existe realmente.For site of origin files, however, an assembly may have no knowledge of them at all, or implicit knowledge through a pack identificador de recursos uniforme (URI)uniform resource identifier (URI) reference; the case of the latter, there is no guarantee that the referenced site of origin file actually exists.

Para hacer referencia a archivos de datos de aplicación, Windows Presentation Foundation (WPF) usa el módulo identificador de recursos uniforme (URI)uniform resource identifier (URI) esquema, que se describe detalladamente en Pack URI en WPF).To reference application data files, Windows Presentation Foundation (WPF) uses the Pack identificador de recursos uniforme (URI)uniform resource identifier (URI) Scheme, which is described in detail in Pack URIs in WPF).

En este tema se describe cómo configurar y usar archivos de datos de aplicaciones.This topic describes how to configure and use application data files.

Archivos de recursosResource Files

Si un archivo de datos de la aplicación debe estar siempre disponible para una aplicación, la única forma de garantizar la disponibilidad es compilarlo en el ensamblado ejecutable principal de una aplicación o en uno de sus ensamblados referenciados.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. Este tipo de archivo de datos de aplicación se conoce como un archivo de recursos.This type of application data file is known as a resource file.

Los archivos de recursos se deben usar cuando:You should use resource files when:

  • No es necesario actualizar el contenido del archivo de recursos después de que se compila en un ensamblado.You don't need to update the resource file's content after it is compiled into an assembly.

  • Desea simplificar la complejidad de la distribución de una aplicación mediante la reducción del número de dependencias de los archivos.You want to simplify application distribution complexity by reducing the number of file dependencies.

  • El archivo de datos de la aplicación debe ser localizable (vea WPF Globalization and Localization Overview).Your application data file needs to be localizable (see WPF Globalization and Localization Overview).

Nota

Los archivos de recursos que se describen en esta sección son diferentes de los archivos de recursos se describen en recursos XAML y diferentes de los recursos incrustados o vinculados que se describe en administrar aplicación de recursos (. 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 Manage Application Resources (.NET).

Configuración de archivos de recursosConfiguring Resource Files

En WPFWPF, un archivo de recursos es un archivo que se incluye en un Microsoft build engine (MSBuild)Microsoft build engine (MSBuild) proyecto como un Resource elemento.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>  

Nota

En Microsoft Visual StudioMicrosoft Visual Studio, cree un archivo de recursos mediante la adición de un archivo a un proyecto y su Build Action a Resource.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.

Cuando se compila el proyecto, MSBuildMSBuild compila el recurso en el ensamblado.When the project is built, MSBuildMSBuild compiles the resource into the assembly.

Uso de archivos de recursosUsing Resource Files

Para cargar un archivo de recursos, puede llamar a la GetResourceStream método de la Application (clase), pasando un pack Identificador URIURI que identifica el archivo de recurso deseado.To load a resource file, you can call the GetResourceStream method of the Application class, passing a pack Identificador URIURI that identifies the desired resource file. GetResourceStream Devuelve un StreamResourceInfo objeto, que expone el archivo de recursos como un Stream y describe su tipo de contenido.GetResourceStream returns a StreamResourceInfo object, which exposes the resource file as a Stream and describes its content type.

Por ejemplo, el código siguiente muestra cómo usar GetResourceStream para cargar un Page recursos de archivos y establecerlo como contenido de un 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

Durante la llamada a GetResourceStream proporciona acceso a la Stream, deberá realizar el trabajo adicional de convertirlo en el tipo de la propiedad que se establecerá con.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. En su lugar, puede dejar que WPFWPF se encargan de abrir y convertir la Stream cargando un archivo de recursos directamente en la propiedad de un tipo mediante código.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.

El ejemplo siguiente muestra cómo cargar un Page directamente en un Frame (pageFrame) mediante código.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

El ejemplo siguiente es el equivalente de marcación del ejemplo anterior.The following example is the markup equivalent of the preceding example.

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

Archivos de código de aplicación como archivos de recursosApplication Code Files as Resource Files

Un conjunto especial de WPFWPF pueden hacer referencia a los archivos de código de aplicación mediante el módulo URIURIs, incluidos windows, páginas, documentos dinámicos y diccionarios de recursos.A special set of WPFWPF application code files can be referenced using pack URIURIs, including windows, pages, flow documents, and resource dictionaries. Por ejemplo, puede establecer el Application.StartupUri propiedad con un módulo Identificador URIURI que hace referencia a la ventana o página que le gustaría cargar cuando se inicia una aplicación.For example, you can set the Application.StartupUri property with a pack Identificador 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" />

Puede hacerlo cuando una XAMLXAML archivo está incluido en un Microsoft build engine (MSBuild)Microsoft build engine (MSBuild) proyecto como un Page elemento.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>  

Nota

En Programa para la mejoraVisual Studio, se agrega un nuevo Window, NavigationWindow, Page, FlowDocument, o ResourceDictionary a un proyecto, el Build Action el marcado archivo valor predeterminado es Page.In Programa para la mejoraVisual 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.

Cuando un proyecto con Page elementos se compila, el XAMLXAML elementos se convierten a formato binario y se compilan en el ensamblado asociado.When a project with Page items is compiled, the XAMLXAML items are converted to binary format and compiled into the associated assembly. Por consiguiente, estos archivos se pueden utilizar de la misma forma que los archivos de recursos típicos.Consequently, these files can be used in the same way as typical resource files.

Nota

Si un XAMLXAML archivo está configurado como un Resource de elemento y no tiene un archivo de código subyacente, sin formato XAMLXAML se compila en un ensamblado en lugar de una versión binaria sin formato 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.

Archivos de contenidoContent Files

Un archivo de contenido se distribuye como un archivo dinámico junto a un ensamblado ejecutable.A content file is distributed as a loose file alongside an executable assembly. Aunque no se compilan en un ensamblado, los ensamblados se compilan con metadatos que establecen una asociación con cada archivo de contenido.Although they are not compiled into an assembly, assemblies are compiled with metadata that establishes an association with each content file.

Los archivos de contenido se deben usar cuando la aplicación requiere un conjunto específico de archivos de datos de aplicación que desee poder actualizar sin volver a compilar el ensamblado que los consume.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.

Configuración de archivos de contenidoConfiguring Content Files

Para agregar un archivo de contenido a un proyecto, se debe incluir como un archivo de datos de la aplicación un Content elemento.To add a content file to a project, an application data file must be included as a Content item. Además, dado que no se compila un archivo de contenido directamente en el ensamblado, debe establecer el MSBuildMSBuild CopyToOutputDirectory metadatos de elemento para especificar que el archivo de contenido se copia en una ubicación que es relativa al ensamblado generado.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. Si desea que el recurso que se va a copiar en la carpeta de salida de compilación cada vez se compila un proyecto, establecer el CopyToOutputDirectory elemento de metadatos con el Always valor.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. En caso contrario, puede asegurarse de que solo la versión más reciente del recurso se copia en la carpeta de salida de compilación mediante la PreserveNewest valor.Otherwise, you can ensure that only the newest version of the resource is copied to the build output folder by using the PreserveNewest value.

A continuación muestra un archivo que se configura como un archivo de contenido que se copia en la carpeta de salida de compilación solo cuando se agrega al proyecto una nueva versión del recurso.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>  

Nota

En Programa para la mejoraVisual Studio, cree un archivo de contenido mediante la adición de un archivo a un proyecto y su Build Action a Contenty establezca su Copy to Output Directory a Copy always (igual que Always) y Copy if newer (igual que PreserveNewest).In Programa para la mejoraVisual 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).

Cuando se compila el proyecto, un AssemblyAssociatedContentFileAttribute atributo se compila en los metadatos del ensamblado para cada archivo de contenido.When the project is built, an AssemblyAssociatedContentFileAttribute attribute is compiled into the metadata of the assembly for each content file.

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

El valor de la AssemblyAssociatedContentFileAttribute implica la ruta de acceso al archivo de contenido en relación con su posición en el proyecto.The value of the AssemblyAssociatedContentFileAttribute implies the path to the content file relative to its position in the project. Por ejemplo, si un archivo de contenido se encontraba en una subcarpeta del proyecto, la información de ruta de acceso adicional se incorporaría el AssemblyAssociatedContentFileAttribute valor.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")]

El AssemblyAssociatedContentFileAttribute valor también es el valor de la ruta de acceso al archivo de contenido en la carpeta de salida de compilación.The AssemblyAssociatedContentFileAttribute value is also the value of the path to the content file in the build output folder.

Uso de archivos de contenidoUsing Content Files

Para cargar un archivo de contenido, puede llamar a la GetContentStream método de la Application (clase), pasando un pack Identificador URIURI que identifica el archivo de contenido deseado.To load a content file, you can call the GetContentStream method of the Application class, passing a pack Identificador URIURI that identifies the desired content file. GetContentStream Devuelve un StreamResourceInfo objeto, que expone el archivo de contenido como un Stream y describe su tipo de contenido.GetContentStream returns a StreamResourceInfo object, which exposes the content file as a Stream and describes its content type.

Por ejemplo, el código siguiente muestra cómo usar GetContentStream para cargar un Page archivo de contenido y establecerlo como contenido de un 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

Durante la llamada a GetContentStream proporciona acceso a la Stream, deberá realizar el trabajo adicional de convertirlo en el tipo de la propiedad que se establecerá con.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. En su lugar, puede dejar que WPFWPF se encargan de abrir y convertir la Stream cargando un archivo de recursos directamente en la propiedad de un tipo mediante código.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.

El ejemplo siguiente muestra cómo cargar un Page directamente en un Frame (pageFrame) mediante código.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

El ejemplo siguiente es el equivalente de marcación del ejemplo anterior.The following example is the markup equivalent of the preceding example.

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

Sitio de archivos de origenSite of Origin Files

Archivos de recursos tienen una relación explícita con los ensamblados que se distribuyen, tal como se define por la AssemblyAssociatedContentFileAttribute.Resource files have an explicit relationship with the assemblies that they are distributed alongside, as defined by the AssemblyAssociatedContentFileAttribute. Sin embargo, hay veces en las que puede desear establecer una relación implícita o inexistente entre un ensamblado y un archivo de datos de aplicación, incluyendo cuándo: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:

  • No existe un archivo en tiempo de compilación.A file doesn't exist at compile time.

  • No sabe qué archivos requerirá el ensamblado hasta el tiempo de ejecución.You don't know what files your assembly will require until run time.

  • Desea poder actualizar los archivos sin volver a compilar el ensamblado al que están asociados.You want to be able to update files without recompiling the assembly that they are associated with.

  • La aplicación utiliza archivos de datos grandes, como audio y vídeo, y solo desea que los usuarios los descarguen si eligen hacerlo.Your application uses large data files, such as audio and video, and you only want users to download them if they choose to.

Es posible cargar estos tipos de archivos mediante el uso de tradicionales Identificador URIURI esquemas, como los esquemas file:/// y http://.It is possible to load these types of files by using traditional Identificador URIURI schemes, such as the file:/// and http:// schemes.

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

Sin embargo, los esquemas file:/// y http:// requieren que la aplicación tenga plena confianza.However, the file:/// and http:// schemes require your application to have full trust. Si la aplicación es un Aplicación del explorador XAML (XBAP)XAML browser application (XBAP) que se inició desde Internet o intranet y solicita solo el conjunto de permisos que se permiten para las aplicaciones iniciadas desde esas ubicaciones, solo se pueden cargar archivos separados del sitio de la aplicación de origen ( ubicación de inicio).If your application is a Aplicación del explorador 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). Estos archivos se denominan sitio de origen archivos.Such files are known as site of origin files.

Los archivos del sitio de origen son la única opción para las aplicaciones de confianza parcial, aunque no se limitan a ese tipo de aplicaciones.Site of origin files are the only option for partial trust applications, although are not limited to partial trust applications. Es posible que las aplicaciones de plena confianza aún necesiten cargar archivos de datos de aplicación que desconocen en tiempo de compilación; mientras que las aplicaciones de plena confianza pueden utilizar file:///, es probable que los archivos de datos de la aplicación se instalarán en la misma carpeta que el ensamblado de la aplicación, o en una subcarpeta de él.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. En este caso, es más sencillo usar la referencia del sitio de origen que file:///, ya que el uso de file:/// requiere que se determine la ruta de acceso completa del archivo.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.

Nota

Sitio de origen no se almacenan en caché los archivos con un Aplicación del explorador XAML (XBAP)XAML browser application (XBAP) en un equipo cliente, mientras que son archivos de contenido.Site of origin files are not cached with an Aplicación del explorador XAML (XBAP)XAML browser application (XBAP) on a client machine, while content files are. Por consiguiente, sólo se descargan cuando se solicita específicamente.Consequently, they are only downloaded when specifically requested. Si un Aplicación del explorador XAML (XBAP)XAML browser application (XBAP) aplicación tiene archivos multimedia grandes, configurarlos como sitio de archivos de origen significa que el inicio de la aplicación es mucho más rápido y solo se descargan los archivos a petición.If an Aplicación del explorador 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.

Configuración de archivos de sitio de origenConfiguring Site of Origin Files

Si su sitio de archivos de origen es inexistentes o desconocido en tiempo de compilación, deberá usar la implementación tradicional mecanismos para garantizar los archivos necesarios están disponibles en tiempo de ejecución, incluido el uso de cualquiera el XCopy programa de línea de comandos o el Microsoft Windows InstallerMicrosoft 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 InstallerMicrosoft Windows Installer.

Si conoce en tiempo de compilación de los archivos que lo haría que se encuentren en el sitio de origen, pero todavía desea evitar una dependencia explícita, puede agregar dichos archivos a un Microsoft build engine (MSBuild)Microsoft build engine (MSBuild) como None elemento.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. Como en los archivos de contenido, debe establecer el MSBuildMSBuild CopyToOutputDirectory atributo para especificar que el archivo de sitio de origen se copia en una ubicación que es relativa al ensamblado generado, especificando el Always valor o el PreserveNewest valor.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>  

Nota

En Programa para la mejoraVisual Studio, cree un archivo de sitio de origen mediante la adición de un archivo a un proyecto y su Build Action a None.In Programa para la mejoraVisual Studio, you create a site of origin file by adding a file to a project and setting its Build Action to None.

Cuando se compila el proyecto, MSBuildMSBuild copia los archivos especificados en la carpeta de salida de compilación.When the project is built, MSBuildMSBuild copies the specified files to the build output folder.

Uso de archivos del sitio de origenUsing Site of Origin Files

Para cargar un archivo de sitio de origen, puede llamar a la GetRemoteStream método de la Application (clase), pasando un pack Identificador URIURI que identifica el sitio deseado del archivo de origen.To load a site of origin file, you can call the GetRemoteStream method of the Application class, passing a pack Identificador URIURI that identifies the desired site of origin file. GetRemoteStream Devuelve un StreamResourceInfo objeto, que expone el sitio del archivo de origen como un Stream y describe su tipo de contenido.GetRemoteStream returns a StreamResourceInfo object, which exposes the site of origin file as a Stream and describes its content type.

Por ejemplo, el código siguiente muestra cómo usar GetRemoteStream para cargar un Page sitio de origen de archivo y establecerlo como contenido de un 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

Durante la llamada a GetRemoteStream proporciona acceso a la Stream, deberá realizar el trabajo adicional de convertirlo en el tipo de la propiedad que se establecerá con.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. En su lugar, puede dejar que WPFWPF se encargan de abrir y convertir la Stream cargando un archivo de recursos directamente en la propiedad de un tipo mediante código.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.

El ejemplo siguiente muestra cómo cargar un Page directamente en un Frame (pageFrame) mediante código.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

El ejemplo siguiente es el equivalente de marcación del ejemplo anterior.The following example is the markup equivalent of the preceding example.

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

Nueva compilación después de cambiar el tipo de compilaciónRebuilding After Changing Build Type

Después de cambiar el tipo de compilación de un archivo de datos de aplicación, es preciso volver a compilar toda la aplicación para asegurarse de que se aplican los cambios.After you change the build type of an application data file, you need to rebuild the entire application to ensure those changes are applied. Si solo compila la aplicación, no se aplican los cambios.If you only build the application, the changes are not applied.

Vea tambiénSee also