WPF-Anwendungsressource, Inhalts- und DatendateienWPF Application Resource, Content, and Data Files

Microsoft Windows-Anwendungen sind häufig von Dateien abhängig, die nicht ausführbare Daten enthalten, z. b. Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML), Bilder, Video und Audiodaten.Microsoft Windows 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) bietet spezielle Unterstützung für das konfigurieren, identifizieren und Verwenden dieser Daten Dateitypen, die als Anwendungs Datendateien bezeichnet werden.Windows Presentation Foundation (WPF) offers special support for configuring, identifying, and using these types of data files, which are called application data files. Diese Unterstützung bezieht sich auf einen bestimmten Satz von Anwendungsdatendateitypen, einschließlich:This support revolves around a specific set of application data file types, including:

  • Ressourcen Dateien: Datendateien, die entweder in eine ausführbare Datei oder eine Bibliothek WPFWPF Assembly kompiliert werden.Resource Files: Data files that are compiled into either an executable or library WPFWPF assembly.

  • Inhalts Dateien: eigenständige Datendateien, die über eine explizite Zuordnung zu einer ausführbaren WPFWPF Assembly verfügen.Content Files: Standalone data files that have an explicit association with an executable WPFWPF assembly.

  • Dateien der Ursprungs Site: eigenständige Datendateien, die keiner ausführbaren WPFWPF Assembly zugeordnet sind.Site of Origin Files: Standalone data files that have no association with an executable WPFWPF assembly.

Ein wichtiger Unterschied zwischen diesen drei Dateitypen besteht darin, dass die Ressourcen- und Inhaltsdateien zur Buildzeit bekannt sind. Sie sind einer Assembly explizit bekannt.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. Für Dateien der Ursprungs Site ist eine Assembly jedoch möglicherweise überhaupt nicht bekannt oder implizites Wissen durch einen URI-Verweis (Uniform Resource Identifier) des Pakets. bei letzterem gibt es keine Garantie dafür, dass die referenzierte Site der Ursprungs Datei tatsächlich vorhanden ist.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) reference; the case of the latter, there is no guarantee that the referenced site of origin file actually exists.

Um auf Anwendungs Datendateien zu verweisen, verwendet Windows Presentation Foundation (WPF) das Paket-URI-Schema (Uniform Resource Identifier), das unter Paket-URIs in WPFausführlich beschrieben wird.To reference application data files, Windows Presentation Foundation (WPF) uses the Pack uniform resource identifier (URI) Scheme, which is described in detail in Pack URIs in WPF).

In diesem Thema wird beschrieben, wie Sie Anwendungsdatendateien konfigurieren und verwenden.This topic describes how to configure and use application data files.

RessourcendateienResource Files

Wenn eine Anwendungsdatendatei einer Anwendung stets zur Verfügung stehen muss, kann die Verfügbarkeit nur dadurch gewährleistet werden, dass die Datei in eine der ausführbaren Hauptassemblys einer Anwendung oder in eine der Assemblys kompiliert wird, auf die verwiesen wird.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. Diese Art von Anwendungs Datendatei wird als Ressourcen Dateibezeichnet.This type of application data file is known as a resource file.

Verwenden Sie die Ressourcendateien in folgenden Fällen:You should use resource files when:

  • Sie müssen den Inhalt der Ressourcendatei nicht aktualisieren, nachdem sie in eine Assembly kompiliert wurde.You don't need to update the resource file's content after it is compiled into an assembly.

  • Sie möchten die Komplexität der Anwendungsverteilung vereinfachen, indem Sie die Anzahl von Dateiabhängigkeiten verringern.You want to simplify application distribution complexity by reducing the number of file dependencies.

  • Die Anwendungs Datendatei muss lokalisiert werden können (Weitere Informationen finden Sie unter Übersicht über WPF-Globalisierung und-Lokalisierung).Your application data file needs to be localizable (see WPF Globalization and Localization Overview).

Hinweis

Die in diesem Abschnitt beschriebenen Ressourcen Dateien unterscheiden sich von den in XAML-Ressourcen beschriebenen Ressourcen Dateien und unterscheiden sich von den in Verwalten von Anwendungs Ressourcen (.net)beschriebenen eingebetteten oder verknüpften Ressourcen.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).

Konfigurieren von RessourcendateienConfiguring Resource Files

In WPFWPFhandelt es sich bei einer Ressourcen Datei um eine Datei, die in einem MSBuild-Projekt (Microsoft Build Engine) als Resource Element enthalten ist.In WPFWPF, a resource file is a file that is included in an 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>  

Hinweis

In Visual Studio erstellen Sie eine Ressourcen Datei, indem Sie einem Projekt eine Datei hinzufügen und deren Build Action auf Resourcefestlegen.In Visual Studio, you create a resource file by adding a file to a project and setting its Build Action to Resource.

Wenn das Projekt erstellt wird, kompiliert MSBuild die Ressource in die Assembly.When the project is built, MSBuild compiles the resource into the assembly.

Verwenden von RessourcendateienUsing Resource Files

Wenn Sie eine Ressourcen Datei laden möchten, können Sie die GetResourceStream-Methode der Application-Klasse aufzurufen, indem Sie einen Paket-URI übergeben, der die gewünschte Ressourcen Datei identifiziert.To load a resource file, you can call the GetResourceStream method of the Application class, passing a pack URI that identifies the desired resource file. GetResourceStream gibt ein StreamResourceInfo-Objekt zurück, das die Ressourcen Datei als Stream verfügbar macht und den Inhaltstyp beschreibt.GetResourceStream returns a StreamResourceInfo object, which exposes the resource file as a Stream and describes its content type.

Der folgende Code zeigt beispielsweise, wie Sie mit GetResourceStream eine Page Ressourcen Datei laden und als Inhalt eines Frame (pageFrame) festlegen: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

Beim Aufrufen von GetResourceStream erhalten Sie Zugriff auf die Stream. Sie müssen jedoch zusätzliche Schritte durchführen, um ihn in den Typ der Eigenschaft umzuwandeln, mit der Sie ihn festlegen.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. Stattdessen können Sie WPFWPF das Öffnen und wandeln der Stream durchführen, indem Sie eine Ressourcen Datei mithilfe von Code direkt in die-Eigenschaft eines Typs laden.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.

Im folgenden Beispiel wird gezeigt, wie ein Page mithilfe von Code direkt in eine Frame (pageFrame) geladen wird.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

Das folgende Beispiel entspricht dem Markup des vorangehenden Beispiels.The following example is the markup equivalent of the preceding example.

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

Anwendungscodedateien als RessourcendateienApplication Code Files as Resource Files

Ein spezieller Satz von WPFWPF Anwendungscode Dateien kann mithilfe von Paket-URIs referenziert werden, einschließlich Fenstern, Seiten, Fluss Dokumenten und Ressourcen Wörterbüchern.A special set of WPFWPF application code files can be referenced using pack URIs, including windows, pages, flow documents, and resource dictionaries. Beispielsweise können Sie die Application.StartupUri-Eigenschaft mit einem Paket-URI festlegen, der auf das Fenster oder die Seite verweist, das Sie beim Starten einer Anwendung laden möchten.For example, you can set the Application.StartupUri property with a pack URI 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" />

Dies ist möglich, wenn eine XAML-Datei in einem MSBuild-Projekt als Page Element enthalten ist.You can do this when a XAML file is included in an MSBuild project as a Page item.

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

Hinweis

In Visual Studio fügen Sie einem Projekt eine neue Window, NavigationWindow, Page, FlowDocumentoder ResourceDictionary hinzu. die Build Action für die Markup Datei wird standardmäßig auf Page.In Visual 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.

Wenn ein Projekt mit Page Elementen kompiliert wird, werden die XAMLXAML Elemente in das Binärformat konvertiert und in die zugehörige Assembly kompiliert.When a project with Page items is compiled, the XAMLXAML items are converted to binary format and compiled into the associated assembly. Folglich können diese Dateien auf die gleiche Weise verwendet werden wie typische Ressourcendateien.Consequently, these files can be used in the same way as typical resource files.

Hinweis

Wenn eine XAMLXAML Datei als Resource Element konfiguriert ist und keine Code-Behind-Datei enthält, wird die unformatierte XAMLXAML in eine Assembly kompiliert, statt in eine binäre Version der RAW-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.

InhaltsdateienContent Files

Eine Inhalts Datei wird neben einer ausführbaren Assembly als lose Datei verteilt.A content file is distributed as a loose file alongside an executable assembly. Obwohl Assemblys nicht in eine Assembly kompiliert werden, werden sie mit Metadaten kompiliert, die eine Zuordnung mit den einzelnen Inhaltsdateien herstellen.Although they are not compiled into an assembly, assemblies are compiled with metadata that establishes an association with each content file.

Verwenden Sie Inhaltsdateien, wenn die Anwendung einen speziellen Satz von Anwendungsdatendateien erfordert, die aktualisierbar sein soll, ohne dass die Assembly, die sie verwendet, neu kompiliert werden muss.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.

Konfigurieren von InhaltsdateienConfiguring Content Files

Wenn Sie einem Projekt eine Inhalts Datei hinzufügen möchten, muss eine Anwendungs Datendatei als Content Element eingeschlossen werden.To add a content file to a project, an application data file must be included as a Content item. Da eine Inhalts Datei nicht direkt in die Assembly kompiliert wird, müssen Sie außerdem das MSBuild-CopyToOutputDirectory Metadata-Element festlegen, um anzugeben, dass die Inhalts Datei an einen Speicherort kopiert wird, der relativ zur erstellten Assembly ist.Furthermore, because a content file is not compiled directly into the assembly, you need to set the MSBuild CopyToOutputDirectory metadata element to specify that the content file is copied to a location that is relative to the built assembly. Wenn Sie möchten, dass die Ressource bei jedem Erstellen eines Projekts in den Buildausgabeordner kopiert wird, legen Sie das CopyToOutputDirectory Metadata-Element mit dem Always Wert fest.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. Andernfalls können Sie sicherstellen, dass nur die neueste Version der Ressource mithilfe des PreserveNewest Werts in den Buildausgabeordner kopiert wird.Otherwise, you can ensure that only the newest version of the resource is copied to the build output folder by using the PreserveNewest value.

Im Folgenden wird eine Datei gezeigt, die als Inhaltsdatei konfiguriert ist und nur dann in den Buildausgabeordner kopiert wird, wenn dem Projekt eine neue Version der Ressource hinzugefügt wird.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>  

Hinweis

In Visual Studio erstellen Sie eine Inhalts Datei, indem Sie einem Projekt eine Datei hinzufügen und deren Build Action auf Contentfestlegen und die Copy to Output Directory auf Copy always (identisch mit Always) und Copy if newer (identisch mit PreserveNewest) festlegen.In Visual 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).

Wenn das Projekt erstellt wird, wird ein AssemblyAssociatedContentFileAttribute Attribut in die Metadaten der Assembly für jede Inhalts Datei kompiliert.When the project is built, an AssemblyAssociatedContentFileAttribute attribute is compiled into the metadata of the assembly for each content file.

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

Der Wert des AssemblyAssociatedContentFileAttribute impliziert den Pfad zur Inhalts Datei relativ zur Position im Projekt.The value of the AssemblyAssociatedContentFileAttribute implies the path to the content file relative to its position in the project. Wenn sich eine Inhalts Datei z. b. in einem Unterordner des Projekts befindet, werden die zusätzlichen Pfadinformationen in den AssemblyAssociatedContentFileAttribute Wert eingefügt.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")]

Der AssemblyAssociatedContentFileAttribute Wert ist auch der Wert des Pfads zur Inhalts Datei im Buildausgabeordner.The AssemblyAssociatedContentFileAttribute value is also the value of the path to the content file in the build output folder.

Verwenden von InhaltsdateienUsing Content Files

Wenn Sie eine Inhalts Datei laden möchten, können Sie die GetContentStream-Methode der Application-Klasse aufzurufen, indem Sie einen Paket-URI übergeben, der die gewünschte Inhalts Datei identifiziert.To load a content file, you can call the GetContentStream method of the Application class, passing a pack URI that identifies the desired content file. GetContentStream gibt ein StreamResourceInfo-Objekt zurück, das die Inhalts Datei als Stream verfügbar macht und den Inhaltstyp beschreibt.GetContentStream returns a StreamResourceInfo object, which exposes the content file as a Stream and describes its content type.

Im folgenden Codebeispiel wird gezeigt, wie GetContentStream verwendet wird, um eine Page Inhalts Datei zu laden und als Inhalt eines Frame (pageFrame) festzulegen.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

Beim Aufrufen von GetContentStream erhalten Sie Zugriff auf die Stream. Sie müssen jedoch zusätzliche Schritte durchführen, um ihn in den Typ der Eigenschaft umzuwandeln, mit der Sie ihn festlegen.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. Stattdessen können Sie WPFWPF das Öffnen und wandeln der Stream durchführen, indem Sie eine Ressourcen Datei mithilfe von Code direkt in die-Eigenschaft eines Typs laden.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.

Im folgenden Beispiel wird gezeigt, wie ein Page mithilfe von Code direkt in eine Frame (pageFrame) geladen wird.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

Das folgende Beispiel entspricht dem Markup des vorangehenden Beispiels.The following example is the markup equivalent of the preceding example.

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

Dateien der UrsprungssiteSite of Origin Files

Ressourcen Dateien haben eine explizite Beziehung zu den Assemblys, die Sie zusammen mit den AssemblyAssociatedContentFileAttribute definieren.Resource files have an explicit relationship with the assemblies that they are distributed alongside, as defined by the AssemblyAssociatedContentFileAttribute. Es kann jedoch vorkommen, dass Sie eine implizite oder nicht vorhandene Beziehung zwischen einer Assembly und einer Anwendungsdatendatei herstellen, u. a. in folgenden Fällen: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:

  • Zum Zeitpunkt der Kompilierung ist keine Datei vorhanden.A file doesn't exist at compile time.

  • Sie wissen bis zur Laufzeit nicht, welche Dateien von der Assembly benötigt werden.You don't know what files your assembly will require until run time.

  • Sie möchten in der Lage sein, Dateien ohne Neukompilierung der Assembly, der sie zugeordnet sind, zu aktualisieren.You want to be able to update files without recompiling the assembly that they are associated with.

  • Die Anwendung verwendet große Datendateien, z. B. Audio und Video. Diese sollen von Benutzern nur heruntergeladen werden, wenn sie dies wünschen.Your application uses large data files, such as audio and video, and you only want users to download them if they choose to.

Es ist möglich, diese Dateitypen mithilfe herkömmlicher URI-Schemas, wie z. b. den Schemas file:///und http://, zu laden.It is possible to load these types of files by using traditional URI schemes, such as the file:/// and http:// schemes.

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

Die Schemas „file:///“ und „http://“ erfordern jedoch volle Vertrauenswürdigkeit der Anwendung.However, the file:/// and http:// schemes require your application to have full trust. Wenn es sich bei Ihrer Anwendung um eine XAML-Browser Anwendung (XBAP) handelt, die über das Internet oder Intranet gestartet wurde, und nur den Berechtigungs Satz anfordert, der für Anwendungen zulässig ist, die von diesen Speicherorten aus gestartet werden, können lose Dateien nur aus dem die Ursprungs Site der Anwendung (Start Speicherort).If your application is a 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). Solche Dateien werden als Dateien der Ursprungs Site bezeichnet.Such files are known as site of origin files.

Dateien der Ursprungssite stellen für teilweise vertrauenswürdige Anwendungen die einzige Option dar, obwohl sie nicht auf letztere beschränkt sind.Site of origin files are the only option for partial trust applications, although are not limited to partial trust applications. Anwendungen mit voller Vertrauenswürdigkeit müssen ggf. Anwendungsdatendateien laden, die sie zur Buildzeit nicht kennen. Obwohl Anwendungen mit voller Vertrauenswürdigkeit „file:///“ verwenden könnten, ist anzunehmen, dass die Anwendungsdatendateien im selben Ordner oder in einem Unterordner der Anwendungsassembly installiert werden.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. In einem solchen Fall gestaltet sich die Verwendung des Verweises auf die Ursprungssite einfacher als die Verwendung von „file:///“, da die Verwendung von „file:///“ von Ihnen erfordert, den vollständigen Pfad zur Datei auszuarbeiten.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.

Hinweis

Dateien der Ursprungs Site werden nicht mit einer XAML-Browser Anwendung (XBAP) auf einem Client Computer zwischengespeichert, während Inhalts Dateien gleich sind.Site of origin files are not cached with an XAML browser application (XBAP) on a client machine, while content files are. Folglich werden sie nur heruntergeladen, wenn sie ausdrücklich angefordert werden.Consequently, they are only downloaded when specifically requested. Wenn eine XBAP-Anwendung (XAML-Browser Anwendung) große Mediendateien enthält und diese als Dateien der Ursprungs Site konfiguriert werden, ist der erste Anwendungsstart wesentlich schneller, und die Dateien werden nur bei Bedarf heruntergeladen.If an 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.

Konfigurieren der Dateien der UrsprungssiteConfiguring Site of Origin Files

Wenn die Dateien der Ursprungs Site zum Zeitpunkt der Kompilierung nicht vorhanden oder unbekannt sind, müssen Sie herkömmliche Bereitstellungs Mechanismen verwenden, um sicherzustellen, dass die erforderlichen Dateien zur Laufzeit verfügbar sind, einschließlich der Verwendung des XCopy Befehlszeilen Programms oder Microsoft Windows. Ations.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 Installer.

Wenn Sie zum Zeitpunkt der Kompilierung wissen, dass Sie sich auf der Ursprungs Site befinden möchten, aber trotzdem eine explizite Abhängigkeit vermeiden möchten, können Sie diese Dateien einem MSBuild-Projekt als None Element hinzufügen.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 MSBuild project as None item. Wie bei Inhalts Dateien müssen Sie das MSBuild-CopyToOutputDirectory-Attribut festlegen, um anzugeben, dass die Ursprungs Site Datei an einen Speicherort kopiert wird, der relativ zur erstellten Assembly ist, indem Sie entweder den Always Wert oder den PreserveNewest Wert angeben.As with content files, you need to set the MSBuild CopyToOutputDirectory 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>  

Hinweis

In Visual Studio erstellen Sie eine Website der Ursprungs Datei, indem Sie einem Projekt eine Datei hinzufügen und deren Build Action auf Nonefestlegen.In Visual Studio, you create a site of origin file by adding a file to a project and setting its Build Action to None.

Wenn das Projekt erstellt wird, kopiert MSBuild die angegebenen Dateien in den Buildausgabeordner.When the project is built, MSBuild copies the specified files to the build output folder.

Verwenden der Dateien der UrsprungssiteUsing Site of Origin Files

Zum Laden einer Datei vom Typ "Site of Origin" können Sie die GetRemoteStream-Methode der Application-Klasse aufzurufen, indem Sie einen Paket-URI übergeben, der die gewünschte Ursprungs Site Datei identifiziert.To load a site of origin file, you can call the GetRemoteStream method of the Application class, passing a pack URI that identifies the desired site of origin file. GetRemoteStream gibt ein StreamResourceInfo-Objekt zurück, das die Datei der Ursprungs Site als Stream verfügbar macht und den Inhaltstyp beschreibt.GetRemoteStream returns a StreamResourceInfo object, which exposes the site of origin file as a Stream and describes its content type.

Im folgenden Codebeispiel wird gezeigt, wie GetRemoteStream verwendet wird, um eine Page Ursprungs Datei zu laden und als Inhalt eines Frame (pageFrame) festzulegen.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

Beim Aufrufen von GetRemoteStream erhalten Sie Zugriff auf die Stream. Sie müssen jedoch zusätzliche Schritte durchführen, um ihn in den Typ der Eigenschaft umzuwandeln, mit der Sie ihn festlegen.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. Stattdessen können Sie WPFWPF das Öffnen und wandeln der Stream durchführen, indem Sie eine Ressourcen Datei mithilfe von Code direkt in die-Eigenschaft eines Typs laden.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.

Im folgenden Beispiel wird gezeigt, wie ein Page mithilfe von Code direkt in eine Frame (pageFrame) geladen wird.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

Das folgende Beispiel entspricht dem Markup des vorangehenden Beispiels.The following example is the markup equivalent of the preceding example.

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

Neuerstellung nach Ändern des BuildtypsRebuilding After Changing Build Type

Nachdem Sie den Buildtyp einer Anwendungsdatendatei geändert haben, müssen Sie die gesamte Anwendung neu erstellen, um zu gewährleisten, dass diese Änderungen übernommen werden.After you change the build type of an application data file, you need to rebuild the entire application to ensure those changes are applied. Wenn Sie nur die Anwendung erstellen, werden die Änderungen nicht übernommen.If you only build the application, the changes are not applied.

Siehe auchSee also