Ресурсы, Содержимое и Файлы данных WPF-приложенияWPF Application Resource, Content, and Data Files

Microsoft WindowsMicrosoft Windows приложения часто зависят от файлов, которые содержат неисполняемые данные, такие как Язык XAMLExtensible Application Markup Language (XAML), изображения, видео и аудио.applications often depend on files that contain non-executable data, such as Язык XAMLExtensible 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.

Важным отличием между этими тремя типами файлов является то, что файлы ресурсов и файлы содержимого известны во время построения. Сборка содержит информацию о них.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. Для файлов исходного узла, тем не менее, сборка может вообще не знает о них, или содержать неявные сведения через пакетную универсальный идентификатор ресурса (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 универсальный идентификатор ресурса (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) использует пакет универсальный идентификатор ресурса (URI)uniform resource identifier (URI) схему, которая подробно описана URI типа Pack в WPF).To reference application data files, Windows Presentation Foundation (WPF) uses the Pack универсальный идентификатор ресурса (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.

Файлы ресурсовResource Files

Если файл данных приложения всегда должен быть доступен для приложения, то единственный способ гарантировать доступность — скомпилировать его в главную исполняемую сборку приложения или в одну из его указанных ссылками сборок.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 Manage 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 Action для 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.

Когда проект будет собран, 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 файлы кода приложения можно ссылаться с помощью пакета Идентификаторы URIURIs, включая windows, страницы, документы нефиксированного формата и словари ресурсов.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, добавляется новый Window, NavigationWindow, Page, FlowDocument, или 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 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 Action для Contentи задайте его Copy to Output Directory для Copy 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 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.

Можно загрузить эти типы файлов с помощью традиционных URIURI схем, таких как file:/// и 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:///, так как последнее требует разработки полного пути к файлу.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 WindowsMicrosoft 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 WindowsMicrosoft 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 Action для None.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