Paket-URI in WPFPack URIs in WPF

In Windows Presentation Foundation (WPF), Uniform Resource Identifier (URIs)uniform resource identifiers (URIs) werden verwendet, um zu identifizieren und Laden von Dateien in vielerlei Hinsicht, einschließlich der folgenden:In Windows Presentation Foundation (WPF), Uniform Resource Identifier (URIs)uniform resource identifiers (URIs) are used to identify and load files in many ways, including the following:

  • Angeben der Benutzeroberfläche (User Interface, UI)user interface (UI) anzuzeigenden beim ersten Starten einer Anwendung.Specifying the Benutzeroberfläche (User Interface, UI)user interface (UI) to show when an application first starts.

  • Laden von BildernLoading images.

  • Navigieren zu SeitenNavigating to pages.

  • Laden von nicht ausführbaren DatendateienLoading non-executable data files.

Darüber hinaus URIsURIs kann verwendet werden, um zu identifizieren und Laden von Dateien aus einer Vielzahl von Standorten, einschließlich der folgenden:Furthermore, URIsURIs can be used to identify and load files from a variety of locations, including the following:

  • Die aktuelle Assembly.The current assembly.

  • Eine Assembly, auf die verwiesen wird.A referenced assembly.

  • Ein zu einer Assembly relativer Speicherort.A location relative to an assembly.

  • Die Ursprungssite der Anwendung.The application's site of origin.

Um einen einheitlichen Mechanismus zum Identifizieren und laden diese Arten von Dateien in diesen Speicherorten bieten WPFWPF nutzt die Erweiterbarkeit von der Paket-URI-Schema.To provide a consistent mechanism for identifying and loading these types of files from these locations, WPFWPF leverages the extensibility of the pack URI scheme. Dieses Thema bietet eine Übersicht über das Schema, wird beschrieben, wie Sie Paket-erstellen URIsURIs für eine Vielzahl von Szenarien, erläutert werden, Absolute und Relative URIsURIs und URIURI Auflösung, bevor die zeigt, wie Sie Paket- URIsURIs aus beiden Markup und Code.This topic provides an overview of the scheme, covers how to construct pack URIsURIs for a variety of scenarios, discusses absolute and relative URIsURIs and URIURI resolution, before showing how to use pack URIsURIs from both markup and code.

Das Paket-URI-SchemaThe Pack URI Scheme

Das Pack URIURI Schema wird verwendet, durch die Open Packaging Conventions (OPC)-Spezifikation, die ein Modell zum Organisieren und Identifizieren von Inhalt beschreibt.The pack URIURI scheme is used by the Open Packaging Conventions (OPC) specification, which describes a model for organizing and identifying content. Die wichtigsten Elemente dieses Modells sind Pakete und Teile, wobei eine Paket ist ein logischer Container, für ein oder mehr logische Teile.The key elements of this model are packages and parts, where a package is a logical container for one or more logical parts. Die folgende Abbildung veranschaulicht dieses Konzept.The following figure illustrates this concept.

Paket und Teile-DiagrammPackage and Parts diagram

Um Komponenten zu identifizieren, nutzt die OPC-Spezifikation die Erweiterbarkeit von RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax) definieren Sie das Pack URIURI Schema.To identify parts, the OPC specification leverages the extensibility of RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax) to define the pack URIURI scheme.

Das Schema, das angegeben wird ein URIURI wird definiert durch sein Präfix; http, ftp und Datei sind bekannte Beispiele.The scheme that is specified by a URIURI is defined by its prefix; http, ftp, and file are well-known examples. Das Pack URIURI Schema verwendet "Paket" als Schema und enthält zwei Komponenten: Autorität und folgenden Pfad.The pack URIURI scheme uses "pack" as its scheme, and contains two components: authority and path. Im folgenden finden Sie das Format für ein Paket URIURI.The following is the format for a pack URIURI.

Pack: / /Autorität/Pfadpack://authority/path

Die Autorität gibt den Typ des Pakets, das ein Teil enthalten ist, während die Pfad gibt den Speicherort eines Elements innerhalb eines Pakets.The authority specifies the type of package that a part is contained by, while the path specifies the location of a part within a package.

Dieses Konzept wird in der folgenden Abbildung verdeutlicht:This concept is illustrated by the following figure:

Beziehung zwischen Paket, Autorität und PfadRelationship among package, authority, and path

Pakete und Teile entsprechen Anwendungen und Dateien: eine Anwendung (ein Paket) kann eine oder mehrere Dateien (Teile) enthalten, darunter:Packages and parts are analogous to applications and files, where an application (package) can include one or more files (parts), including:

  • Ressourcendateien, die in die lokale Assembly kompiliert werdenResource files that are compiled into the local assembly.

  • Ressourcendateien, die in eine Assembly kompiliert werden, auf die verwiesen wirdResource files that are compiled into a referenced assembly.

  • Ressourcendateien, die in eine verweisende Assembly kompiliert werdenResource files that are compiled into a referencing assembly.

  • InhaltsdateienContent files.

  • Dateien der UrsprungssiteSite of origin files.

Diese Arten von Dateien, den Zugriff auf WPFWPF unterstützt zwei Autoritäten: Application: / / / und Siteoforigin: / / /.To access these types of files, WPFWPF supports two authorities: application:/// and siteoforigin:///. Durch die Autorität „application:///“ werden Anwendungsdatendateien identifiziert, die zur Kompilierungszeit bekannt sind, darunter Ressourcen- und Inhaltsdateien.The application:/// authority identifies application data files that are known at compile time, including resource and content files. Durch die Autorität „siteoforigin:///“ werden die Dateien der Ursprungssite identifiziert.The siteoforigin:/// authority identifies site of origin files. Der Bereich der Autoritäten wird in der folgenden Abbildung veranschaulicht.The scope of each authority is shown in the following figure.

Paket-URI-DiagrammPack URI diagram

Hinweis

Die Autoritätskomponente eines Packs URIURI ist ein eingebetteter URIURI , die auf ein Paket verweist und RFC 2396 entsprechen muss.The authority component of a pack URIURI is an embedded URIURI that points to a package and must conform to RFC 2396. Außerdem muss das Zeichen „/“ durch „,“ ersetzt werden, und reservierte Zeichen wie „%“ und „?“ müssen mit Escapezeichen versehen werden.Additionally, the "/" character must be replaced with the "," character, and reserved characters such as "%" and "?" must be escaped. Ausführliche Informationen finden Sie in der OPC.See the OPC for details.

In den folgenden Abschnitten wird erläutert, wie Sie Paket-erstellen URIsURIs mit diesen beiden Autoritäten in Verbindung mit den entsprechenden Pfaden zum Identifizieren von Ressourcen, Inhalte und Dateien der Ursprungssite.The following sections explain how to construct pack URIsURIs using these two authorities in conjunction with the appropriate paths for identifying resource, content, and site of origin files.

Paket-URIs der RessourcendateiResource File Pack URIs

Ressourcendateien sind als konfiguriert MSBuildMSBuild Resource Elemente und werden in Assemblys kompiliert.Resource files are configured as MSBuildMSBuildResource items and are compiled into assemblies. WPFWPF unterstützt die Erstellung von Paket- URIsURIs , die verwendet werden kann, um Ressourcendateien zu identifizieren, die entweder in die lokale Assembly kompiliert oder in einer Assembly, die von der lokalen Assembly verwiesen wird kompiliert. supports the construction of pack URIsURIs that can be used to identify resource files that are either compiled into the local assembly or compiled into an assembly that is referenced from the local assembly.

Ressourcendatei der lokalen AssemblyLocal Assembly Resource File

Das Pack URIURI für eine Ressource, die in die lokale Assembly kompiliert wird verwendet, folgende Autorität und folgenden Pfad:The pack URIURI for a resource file that is compiled into the local assembly uses the following authority and path:

  • Autorität: application:///.Authority: application:///.

  • Pfad: Der Name der Ressourcendatei, einschließlich des Pfads, relativ zum Stammverzeichnis des Projektordners der lokalen Assembly.Path: The name of the resource file, including its path, relative to the local assembly project folder root.

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Ressourcendatei, die im Stammverzeichnis des Projektordners der lokalen Assembly gespeichert ist.The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root of the local assembly's project folder.

pack://application:,,,/ResourceFile.xaml

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Ressourcendatei, die in einem Unterordner des Projektordners der lokalen Assembly gespeichert ist.The following example shows the pack URIURI for a XAMLXAML resource file that is located in a subfolder of the local assembly's project folder.

pack://application:,,,/Subfolder/ResourceFile.xaml

Ressourcendatei der Assembly, auf die verwiesen wirdReferenced Assembly Resource File

Das Pack URIURI für eine Ressource, die in einer referenzierten Assembly kompiliert wird verwendet, folgende Autorität und folgenden Pfad:The pack URIURI for a resource file that is compiled into a referenced assembly uses the following authority and path:

  • Autorität: application:///.Authority: application:///.

  • Pfad: Der Name einer Ressourcendatei, die in eine Assembly kompiliert wurde, auf die verwiesen wird.Path: The name of a resource file that is compiled into a referenced assembly. Der Pfad muss dem folgenden Format entsprechen:The path must conform to the following format:

    AssemblyShortName{; Version] {; Öffentlicher Schlüssel]; Component /PfadAssemblyShortName{;Version]{;PublicKey];component/Path

    • AssemblyShortName: Der Kurzname für die Assembly, auf die verwiesen wird.AssemblyShortName: the short name for the referenced assembly.

    • ;Version [optional]: Die Version der Assembly, auf die verwiesen wird, die die Ressourcendatei enthält.;Version [optional]: the version of the referenced assembly that contains the resource file. Wird verwendet, wenn mindestens zwei Assemblys, auf die verwiesen wird und die über denselben Kurznamen verfügen, geladen werden.This is used when two or more referenced assemblies with the same short name are loaded.

    • ;PublicKey [optional]: Der öffentliche Schlüssel, der zum Signieren der Assembly verwendet wird, auf die verwiesen wird.;PublicKey [optional]: the public key that was used to sign the referenced assembly. Wird verwendet, wenn mindestens zwei Assemblys, auf die verwiesen wird und die über denselben Kurznamen verfügen, geladen werden.This is used when two or more referenced assemblies with the same short name are loaded.

    • ;component: Gibt an, dass von der lokalen Assembly auf die Assembly verwiesen wird.;component: specifies that the assembly being referred to is referenced from the local assembly.

    • /Path: Der Name der Ressourcendatei, einschließlich des Pfads, relativ zum Stammverzeichnis des Projektordners der Assembly, auf die verwiesen wird./Path: the name of the resource file, including its path, relative to the root of the referenced assembly's project folder.

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Ressourcendatei, die im Stammverzeichnis des Projektordners der Assembly, auf die verwiesen wird, gespeichert ist.The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root of the referenced assembly's project folder.

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Ressourcendatei, die in einem Unterordner des Projektordners der Assembly, auf die verwiesen wird, gespeichert ist.The following example shows the pack URIURI for a XAMLXAML resource file that is located in a subfolder of the referenced assembly's project folder.

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Ressourcendatei, die im Stammverzeichnis des Projektordners ein auf die verwiesen wird, hängt von der Version der Assembly gespeichert ist.The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root folder of a referenced, version-specific assembly's project folder.

pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml

Beachten Sie, dass das Pack URIURI Syntax für Ressourcendateien einer Assembly verwiesen wird, kann nur mit der Anwendung verwendet werden: / / / der Autorität.Note that the pack URIURI syntax for referenced assembly resource files can be used only with the application:/// authority. Beispielsweise wird Folgendes nicht unterstützt WPFWPF.For example, the following is not supported in WPFWPF.

pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml

Paket-URIs der InhaltsdateiContent File Pack URIs

Das Pack URIURI für eine Inhaltsdatei, folgende Autorität und folgenden Pfad verwendet:The pack URIURI for a content file uses the following authority and path:

  • Autorität: application:///.Authority: application:///.

  • Pfad: Der Name der Inhaltsdatei, einschließlich des Pfads, relativ zum Speicherort des Dateisystems der ausführbaren Hauptassembly der Anwendung.Path: The name of the content file, including its path relative to the file system location of the application's main executable assembly.

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Inhaltsdatei, die sich im selben Ordner wie die ausführbare Assembly befinden.The following example shows the pack URIURI for a XAMLXAML content file, located in the same folder as the executable assembly.

pack://application:,,,/ContentFile.xaml

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Inhaltsdatei, die in einem Unterordner, der relativ zur ausführbaren Assembly der Anwendung gespeichert.The following example shows the pack URIURI for a XAMLXAML content file, located in a subfolder that is relative to the application's executable assembly.

pack://application:,,,/Subfolder/ContentFile.xaml

Hinweis

Zu HTMLHTML-Inhaltsdateien kann nicht navigiert werden.HTMLHTML content files cannot be navigated to. Die URIURI -Schema unterstützt nur die Navigation zu HTMLHTML Dateien, die auf der Ursprungssite gespeichert sind.The URIURI scheme only supports navigation to HTMLHTML files that are located at the site of origin.

Paket-URIs der UrsprungssiteSite of Origin Pack URIs

Das Pack URIURI für eine Ursprungssite-Datei verwendet folgende Autorität und folgenden Pfad:The pack URIURI for a site of origin file uses the following authority and path:

  • Autorität: siteoforigin:///.Authority: siteoforigin:///.

  • Pfad: Der Name der Datei der Ursprungssite, einschließlich des Pfads, relativ zum Speicherort, von dem die ausführbare Assembly gestartet wurde.Path: The name of the site of origin file, including its path relative to the location from which the executable assembly was launched.

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Datei der Ursprungssite, an dem Speicherort, von dem die ausführbare Assembly gestartet wird, gespeichert.The following example shows the pack URIURI for a XAMLXAML site of origin file, stored in the location from which the executable assembly is launched.

pack://siteoforigin:,,,/SiteOfOriginFile.xaml

Das folgende Beispiel zeigt den Paket- URIURI für eine XAMLXAML Datei der Ursprungssite, gespeichert in Unterordner, der relativ zum Speicherort wird von dem ausführbare Assembly der Anwendung gestartet wird.The following example shows the pack URIURI for a XAMLXAML site of origin file, stored in subfolder that is relative to the location from which the application's executable assembly is launched.

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml

SeitendateienPage Files

XAMLXAML Dateien, die als konfiguriert sind MSBuildMSBuild Page Elemente werden in Assemblys kompiliert, auf die gleiche Weise wie Ressourcendateien. files that are configured as MSBuildMSBuildPage items are compiled into assemblies in the same way as resource files. Folglich MSBuildMSBuild Page Elemente können Sie anhand Pack URIsURIs für Ressourcendateien.Consequently, MSBuildMSBuildPage items can be identified using pack URIsURIs for resource files.

Die Typen von XAMLXAML Dateien, die häufig als konfiguriert sind MSBuildMSBuild Page Elemente weisen einen der folgenden als Stammelement:The types of XAMLXAML files that are commonly configured as MSBuildMSBuildPage items have one of the following as their root element:

Absolute und relative Paket-URIsAbsolute vs. Relative Pack URIs

Ein vollqualifizierter Paket- URIURI enthält das Schema, die Autorität und dem Pfad, und es wird als absoluter Paket- URIURI.A fully qualified pack URIURI includes the scheme, the authority, and the path, and it is considered an absolute pack URIURI. Als eine Vereinfachung für Entwickler XAMLXAML -Elemente ermöglichen normalerweise Festlegen entsprechender Attribute mit einem relativen Paket- URIURI, die nur den Pfad enthält.As a simplification for developers, XAMLXAML elements typically allow you to set appropriate attributes with a relative pack URIURI, which includes only the path.

Betrachten Sie z. B. der folgenden absoluten Paket- URIURI für eine Ressourcendatei in der lokalen Assembly.For example, consider the following absolute pack URIURI for a resource file in the local assembly.

pack://application:,,,/ResourceFile.xaml

Der relative Paket URIURI , die auf diese Ressource verweist Datei wäre.The relative pack URIURI that refers to this resource file would be the following.

/ResourceFile.xaml

Hinweis

Da Dateien der Ursprungssite nicht mit Assemblys verknüpft sind, sie können nur verwiesen werden mit absoluten Paket- URIsURIs.Because site of origin files are not associated with assemblies, they can only be referred to with absolute pack URIsURIs.

Standardmäßig wird eine relative Paket URIURI gilt relativ zum Speicherort des Markup oder Code, der den Verweis enthält.By default, a relative pack URIURI is considered relative to the location of the markup or code that contains the reference. Wenn ein vorangestellter umgekehrter Schrägstrich verwendet wird, aber die relativen Paket- URIURI Verweis wird dann als relativ zum Stammverzeichnis der Anwendung betrachtet.If a leading backslash is used, however, the relative pack URIURI reference is then considered relative to the root of the application. Betrachten Sie beispielsweise die folgende Projektstruktur:For example, consider the following project structure.

App.xaml

Page2.xaml

\SubFolder

+ Page1.xaml

+ Page2.xaml

Wenn "Page1.xaml" enthält einen URIURI , die auf Stamm\SubFolder\Page2.xaml, der Verweis können Sie den folgenden relativen Paket URIURI.If Page1.xaml contains a URIURI that references Root\SubFolder\Page2.xaml, the reference can use the following relative pack URIURI.

Page2.xaml

Wenn "Page1.xaml" enthält einen URIURI , die auf Stamm\Page2.xaml, der Verweis können Sie den folgenden relativen Paket URIURI.If Page1.xaml contains a URIURI that references Root\Page2.xaml, the reference can use the following relative pack URIURI.

/Page2.xaml

Paket-URI-AuflösungPack URI Resolution

Das Format des Paket- URIsURIs ermöglicht es dem Pack URIsURIs für verschiedene Arten von Dateien identisch aussehen.The format of pack URIsURIs makes it possible for pack URIsURIs for different types of files to look the same. Betrachten Sie z. B. der folgenden absoluten Paket- URIURI.For example, consider the following absolute pack URIURI.

pack://application:,,,/ResourceOrContentFile.xaml

Dieser absolute Paket- URIURI kann entweder eine Ressourcendatei in der lokalen Assembly oder eine Inhaltsdatei verweisen.This absolute pack URIURI could refer to either a resource file in the local assembly or a content file. Das gleiche gilt für folgenden relativen URIURI.The same is true for the following relative URIURI.

/ResourceOrContentFile.xaml

Um zu ermitteln, der Typ der Datei, die ein Pack URIURI verweist, WPFWPF löst URIsURIs für Ressourcendateien in lokalen Assemblys und Inhaltsdateien mit folgender Heuristik:In order to determine the type of file that a pack URIURI refers to, WPFWPF resolves URIsURIs for resource files in local assemblies and content files by using the following heuristics:

  1. Überprüfen der Assemblymetadaten auf ein AssemblyAssociatedContentFileAttribute -Attribut, das Pack entspricht URIURI.Probe the assembly metadata for an AssemblyAssociatedContentFileAttribute attribute that matches the pack URIURI.

  2. Wenn die AssemblyAssociatedContentFileAttribute Attribut gefunden wird, wird der Pfad des Paket- URIURI bezieht sich auf eine Inhaltsdatei.If the AssemblyAssociatedContentFileAttribute attribute is found, the path of the pack URIURI refers to a content file.

  3. Wenn die AssemblyAssociatedContentFileAttribute Attribut wurde nicht gefunden, überprüfen die festgelegten Ressourcendateien, die in die lokale Assembly kompiliert werden.If the AssemblyAssociatedContentFileAttribute attribute is not found, probe the set resource files that are compiled into the local assembly.

  4. Wenn eine Ressourcendatei, die den Pfad des Paket-entspricht URIURI gefunden wird, wird der Pfad des Paket- URIURI bezieht sich auf eine Ressourcendatei.If a resource file that matches the path of the pack URIURI is found, the path of the pack URIURI refers to a resource file.

  5. Wenn die Ressource nicht gefunden wird, der intern erstellte Uri ist ungültig.If the resource is not found, the internally created Uri is invalid.

URIURI -Auflösung gilt nicht für URIsURIs mit Verweisen auf die folgenden: resolution does not apply for URIsURIs that refer to the following:

  • Inhaltsdateien in Assemblys verwiesen wird: Diese Dateitypen werden nicht unterstützt, indem WPFWPF.Content files in referenced assemblies: these file types are not supported by WPFWPF.

  • Eingebettete Dateien in Assemblys verwiesen wird: URIsURIs , identifizieren sie eindeutig sind, da sie den Namen der referenzierten Assembly enthalten und die ;component Suffix.Embedded files in referenced assemblies: URIsURIs that identify them are unique because they include both the name of the referenced assembly and the ;component suffix.

  • Dateien der Ursprungssite: URIsURIs , identifizieren sie eindeutig sind, da sie die einzigen Dateien sind, die vom Pack identifiziert werden können URIsURIs , enthalten die Siteoforigin: / / / der Autorität.Site of origin files: URIsURIs that identify them are unique because they are the only files that can be identified by pack URIsURIs that contain the siteoforigin:/// authority.

Eine Vereinfachung, die pack URIURI Auflösung kann für Code ein wenig von den Speicherorten der Ressourcen-und Inhaltsdateien unabhängig ist.One simplification that pack URIURI resolution allows is for code to be somewhat independent of the locations of resource and content files. Wenn Sie eine Ressourcendatei in der lokalen Assembly haben, umkonfiguriert wird, um eine Inhaltsdatei, die das Pack werden z. B. URIURI für die Ressource unverändert bleibt, wie der Code, der die Pack verwendet URIURI.For example, if you have a resource file in the local assembly that is reconfigured to be a content file, the pack URIURI for the resource remains the same, as does the code that uses the pack URIURI.

Programmieren mit Paket-URIsProgramming with Pack URIs

Viele WPFWPF -Klassen implementieren Eigenschaften, die mit Pack festgelegt werden, können URIsURIs, einschließlich:Many WPFWPF classes implement properties that can be set with pack URIsURIs, including:

Diese Eigenschaften können sowohl im Markup als auch im Code festgelegt werden.These properties can be set from both markup and code. In diesem Abschnitt werden die grundlegenden Konstruktionen beider Varianten beschrieben, und es werden Beispiele für allgemeine Szenarien gezeigt.This section demonstrates the basic constructions for both and then shows examples of common scenarios.

Verwenden von Paket-URIs im MarkupUsing Pack URIs in Markup

Ein Pack URIURI im Markup angegeben ist, durch Festlegen des Elements eines Attributs mit dem Pack URIURI.A pack URIURI is specified in markup by setting the element of an attribute with the pack URIURI. Zum Beispiel:For example:

<element attribute="pack://application:,,,/File.xaml" />

Tabelle 1 sehen Sie die verschiedenen absolute Paket- URIsURIs , die Sie im Markup angeben können.Table 1 illustrates the various absolute pack URIsURIs that you can specify in markup.

Tabelle 1: Absolute Paket-URIs im MarkupTable 1: Absolute Pack URIs in Markup

DateiFile Absolute Paket URIURIAbsolute pack URIURI
Ressourcendatei – lokale AssemblyResource file - local assembly "pack://application:,,,/ResourceFile.xaml"
Ressourcendatei im Unterordner – lokale AssemblyResource file in subfolder - local assembly "pack://application:,,,/Subfolder/ResourceFile.xaml"
Ressourcendatei – Assembly, auf die verwiesen wirdResource file - referenced assembly "pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml"
Ressourcendatei im Unterordner der Assembly, auf die verwiesen wirdResource file in subfolder of referenced assembly "pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
Ressourcendatei in Assembly mit Versionsangabe, auf die verwiesen wirdResource file in versioned referenced assembly "pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml"
InhaltsdateiContent file "pack://application:,,,/ContentFile.xaml"
Inhaltsdatei im UnterordnerContent file in subfolder "pack://application:,,,/Subfolder/ContentFile.xaml"
Datei der UrsprungssiteSite of origin file "pack://siteoforigin:,,,/SOOFile.xaml"
Datei der Ursprungssite im UnterordnerSite of origin file in subfolder "pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

Tabelle 2 sehen Sie die verschiedenen relative Paket- URIsURIs , die Sie im Markup angeben können.Table 2 illustrates the various relative pack URIsURIs that you can specify in markup.

Tabelle 2: Relative Paket-URIs im MarkupTable 2: Relative Pack URIs in Markup

DateiFile Relative Paket URIURIRelative pack URIURI
Ressourcendatei in lokaler AssemblyResource file in local assembly "/ResourceFile.xaml"
Ressourcendatei im Unterordner der lokalen AssemblyResource file in subfolder of local assembly "/Subfolder/ResourceFile.xaml"
Ressourcendatei in Assembly, auf die verwiesen wirdResource file in referenced assembly "/ReferencedAssembly;component/ResourceFile.xaml"
Ressourcendatei im Unterordner der Assembly, auf die verwiesen wirdResource file in subfolder of referenced assembly "/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
InhaltsdateiContent file "/ContentFile.xaml"
Inhaltsdatei im UnterordnerContent file in subfolder "/Subfolder/ContentFile.xaml"

Verwenden von Paket-URIs im CodeUsing Pack URIs in Code

Sie geben einen Paket- URIURI im Code durch Instanziierung der Uri -Klasse und übergeben das Pack URIURI als Parameter an den Konstruktor.You specify a pack URIURI in code by instantiating the Uri class and passing the pack URIURI as a parameter to the constructor. Dies wird im folgenden Beispiel dargestellt.This is demonstrated in the following example.

Uri uri = new Uri("pack://application:,,,/File.xaml");  

In der Standardeinstellung die Uri -Klasse Paket- URIsURIs als absolut an.By default, the Uri class considers pack URIsURIs to be absolute. Daher wird eine Ausnahme ausgelöst, wenn eine Instanz von der Uri Klasse wird erstellt, mit einem relativen Paket- URIURI.Consequently, an exception is raised when an instance of the Uri class is created with a relative pack URIURI.

Uri uri = new Uri("/File.xaml");  

Glücklicherweise die Uri(String, UriKind) Überladung von der Uri Klassenkonstruktor akzeptiert einen Parameter vom Typ UriKind können Sie angeben, ob ein Paket- URIURI ist absolut oder relativ.Fortunately, the Uri(String, UriKind) overload of the Uri class constructor accepts a parameter of type UriKind to allow you to specify whether a pack URIURI is either absolute or relative.

// Absolute URI (default)  
Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute);  
// Relative URI  
Uri relativeUri = new Uri("/File.xaml",   
                        UriKind.Relative);  

Sie sollten nur angeben Absolute oder Relative Wenn sind Sie sicher, dass das angegebene Pack URIURI kann einen oder anderen.You should specify only Absolute or Relative when you are certain that the provided pack URIURI is one or the other. Wenn Sie nicht, dass den Typ des Packs wissen URIURI verwendet wird, z. B. wenn ein Benutzer einen Paket- URIURI zur Laufzeit verwenden RelativeOrAbsolute stattdessen.If you don't know the type of pack URIURI that is used, such as when a user enters a pack URIURI at run time, use RelativeOrAbsolute instead.

// Relative or Absolute URI provided by user via a text box  
TextBox userProvidedUriTextBox = new TextBox();  
Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);  

Tabelle 3 sehen Sie die verschiedenen relative Paket- URIsURIs , die Sie im Code angeben können, mithilfe von System.Uri.Table 3 illustrates the various relative pack URIsURIs that you can specify in code by using System.Uri.

Tabelle 3: Absolute Paket-URIs im CodeTable 3: Absolute Pack URIs in Code

DateiFile Absolute Paket URIURIAbsolute pack URIURI
Ressourcendatei – lokale AssemblyResource file - local assembly Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);
Ressourcendatei im Unterordner – lokale AssemblyResource file in subfolder - local assembly Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);
Ressourcendatei – Assembly, auf die verwiesen wirdResource file - referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);
Ressourcendatei im Unterordner der Assembly, auf die verwiesen wirdResource file in subfolder of referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);
Ressourcendatei in Assembly mit Versionsangabe, auf die verwiesen wirdResource file in versioned referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);
InhaltsdateiContent file Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);
Inhaltsdatei im UnterordnerContent file in subfolder Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);
Datei der UrsprungssiteSite of origin file Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
Datei der Ursprungssite im UnterordnerSite of origin file in subfolder Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

Tabelle 4 sehen Sie die verschiedenen relative Paket- URIsURIs , die Sie angeben können, in Code mit System.Uri.Table 4 illustrates the various relative pack URIsURIs that you can specify in code using System.Uri.

Tabelle 4: Relative Paket-URIs im CodeTable 4: Relative Pack URIs in Code

DateiFile Relative Paket URIURIRelative pack URIURI
Ressourcendatei – lokale AssemblyResource file - local assembly Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);
Ressourcendatei im Unterordner – lokale AssemblyResource file in subfolder - local assembly Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
Ressourcendatei – Assembly, auf die verwiesen wirdResource file - referenced assembly Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);
Ressourcendatei im Unterordner – Assembly, auf die verwiesen wirdResource file in subfolder - referenced assembly Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);
InhaltsdateiContent file Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);
Inhaltsdatei im UnterordnerContent file in subfolder Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

Häufige Szenarien mit Paket-URIsCommon Pack URI Scenarios

In den vorherigen Abschnitten wurde erläutert, wie Sie Paket-erstellen URIsURIs Ressource, Inhalte und Dateien der Ursprungssite identifiziert.The preceding sections have discussed how to construct pack URIsURIs to identify resource, content, and site of origin files. In WPFWPF, werden diese Konstruktionen auf vielfältige Weise verwendet und den folgenden Abschnitten werden einige allgemeine Verwendungen.In WPFWPF, these constructions are used in a variety of ways, and the following sections cover several common usages.

Angeben der Benutzeroberfläche, die beim Starten einer Anwendung angezeigt werden sollSpecifying the UI to Show When an Application Starts

StartupUri Gibt das erste UIUI beim Anzeigen einer WPFWPF Anwendung gestartet wird.StartupUri specifies the first UIUI to show when a WPFWPF application is launched. Bei eigenständigen Anwendungen kann die UIUI können ein Fenster sein, wie im folgenden Beispiel gezeigt.For standalone applications, the UIUI can be a window, as shown in the following example.

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

Eigenständige Anwendungen und XAML-Browseranwendungen (XAML browser applications; XBAPs)XAML browser applications (XBAPs) können auch als erste Benutzeroberfläche, eine Seite angeben, wie im folgenden Beispiel gezeigt.Standalone applications and XAML-Browseranwendungen (XAML browser applications; XBAPs)XAML browser applications (XBAPs) can also specify a page as the initial UI, as shown in the following example.

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

Wenn die Anwendung eine eigenständige Anwendung ist und eine Seite wird angegeben, mit StartupUri, WPFWPF öffnet eine NavigationWindow auf die Seite zu hosten.If the application is a standalone application and a page is specified with StartupUri, WPFWPF opens a NavigationWindow to host the page. Für XBAPsXBAPs, wird die Seite im Hostbrowser angezeigt.For XBAPsXBAPs, the page is shown in the host browser.

Im folgenden Beispiel wird das Navigieren zu einer Seite veranschaulicht.The following example shows how to navigate to a page.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  WindowTitle="Page With Hyperlink"
  WindowWidth="250"
  WindowHeight="250">
<Hyperlink NavigateUri="UriOfPageToNavigateTo.xaml">
  Navigate to Another Page
</Hyperlink>
</Page>

Weitere Informationen zu den verschiedenen Möglichkeiten zum Navigieren in WPFWPF, finden Sie unter Übersicht über die Navigation.For more information on the various ways to navigate in WPFWPF, see Navigation Overview.

Angeben eines FenstersymbolsSpecifying a Window Icon

Im folgenden Beispiel wird gezeigt, wie Sie mithilfe eines URIs das Symbol eines Fensters angeben.The following example shows how to use a URI to specify a window's icon.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.MainWindow"
    Icon="WPFIcon1.ico">
</Window>

Weitere Informationen finden Sie unter Icon.For more information, see Icon.

Laden von Bild-, Audio- und VideodateienLoading Image, Audio, and Video Files

WPFWPF ermöglicht es Anwendungen, die alle identifiziert und Pack geladen werden können, verwenden Sie eine Vielzahl von Medientypen, URIsURIs, wie in den folgenden Beispielen gezeigt. allows applications to use a wide variety of media types, all of which can be identified and loaded with pack URIsURIs, as shown in the following examples.

<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/bee.wmv" />
<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/ringin.wav" />
<Image Source="Images/Watermark.png" />

Weitere Informationen zum Arbeiten mit Medieninhalten finden Sie unter Grafiken und Multimedia.For more information on working with media content, see Graphics and Multimedia.

Laden eines Ressourcenverzeichnisses von der UrsprungssiteLoading a Resource Dictionary from the Site of Origin

Ressourcenverzeichnisse (ResourceDictionary) kann verwendet werden, um Anwendungsdesigns zu unterstützen.Resource dictionaries (ResourceDictionary) can be used to support application themes. Eine Möglichkeit, Designs zu erstellen und zu verwalten, besteht darin, mehrere Designs als Ressourcenverzeichnisse zu erstellen, die auf der Ursprungssite einer Anwendung gespeichert sind.One way to create and manage themes is to create multiple themes as resource dictionaries that are located at an application's site of origin. Dadurch können Designs hinzugefügt und aktualisiert werden, ohne dass eine Anwendung erneut kompiliert und bereitgestellt werden muss.This allows themes to be added and updated without recompiling and redeploying an application. Die Ressourcenverzeichnisse können identifiziert und geladen werden mit Pack URIsURIs, die im folgenden Beispiel dargestellt ist.These resource dictionaries can be identified and loaded using pack URIsURIs, which is shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml">
  <Application.Resources>
    <ResourceDictionary Source="pack://siteoforigin:,,,/PageTheme.xaml" />
  </Application.Resources>
</Application>

Eine Übersicht über Designs in WPFWPF, finden Sie unter Stile und Vorlagen.For an overview of themes in WPFWPF, see Styling and Templating.

Siehe auchSee Also

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