Paket-URI in WPFPack URIs in WPF

In Windows Presentation Foundation (WPF) werden die URIs (Uniform Resource Identifier) zum Identifizieren und Laden von Dateien in vielerlei Hinsicht verwendet, einschließlich der folgenden:In Windows Presentation Foundation (WPF), 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), die beim ersten Start einer Anwendung angezeigt werden soll.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 können URIs verwendet werden, um Dateien aus verschiedenen Speicherorten zu identifizieren und zu laden, einschließlich der folgenden:Furthermore, URIs 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 konsistenten Mechanismus zum Identifizieren und Laden dieser Dateitypen von diesen Speicherorten bereitzustellen, nutzt WPFWPF die Erweiterbarkeit des Paket-URI-Schemas.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 enthält eine Übersicht über das Schema und erläutert, wie Paket-URIs für eine Vielzahl von Szenarien erstellt werden. es werden absolute und relative URIs und die URI-Auflösung erläutert, bevor gezeigt wird, wie Paket-URIs aus Markup und Code verwendet werden.This topic provides an overview of the scheme, covers how to construct pack URIs for a variety of scenarios, discusses absolute and relative URIs and URI resolution, before showing how to use pack URIs from both markup and code.

Das Paket-URI-SchemaThe Pack URI Scheme

Das Paket-URI-Schema wird von der OPC-Spezifikation ( Open Packaging Conventions ) verwendet, mit der ein Modell zum organisieren und Identifizieren von Inhalten beschrieben wird.The pack URI 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 ein Paket ein logischer Container für einen oder mehrere logische Teileist.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-Diagramm

Zur Identifizierung von Teilen nutzt die OPC-Spezifikation die Erweiterbarkeit von RFC 2396 (Uniform Resource Identifier (URI): generische Syntax), um das Paket-URI-Schema zu definieren.To identify parts, the OPC specification leverages the extensibility of RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax) to define the pack URI scheme.

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

Pack://Authority /Pfadpack://authority/path

Die Autorität gibt den Pakettyp an, in dem ein Teil enthalten ist, während der Pfad den Speicherort eines Teils innerhalb eines Pakets angibt.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, Zertifizierungsstelle und Pfad

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.

Für den Zugriff auf diese Dateitypen unterstützt WPFWPF 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-Diagramm

Hinweis

Die Autoritäts Komponente eines Paket-URIs ist ein eingebetteter URI, der auf ein Paket verweist und RFC 2396 entsprechen muss.The authority component of a pack URI is an embedded URI 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-URIs mit diesen beiden Autorisierungs Methoden in Verbindung mit den entsprechenden Pfaden zum Identifizieren von Ressourcen, Inhalten und Ursprungs Dateien der Ursprungs Site erstellen.The following sections explain how to construct pack URIs 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

Ressourcen Dateien werden als MSBuild-Resource Elemente konfiguriert und in Assemblys kompiliert.Resource files are configured as MSBuild Resource items and are compiled into assemblies. WPF unterstützt die Erstellung von Paket-URIs, die verwendet werden können, um Ressourcen Dateien zu identifizieren, die entweder in der lokalen Assembly kompiliert oder in eine Assembly kompiliert werden, auf die von der lokalen Assembly verwiesen wird.WPF supports the construction of pack URIs 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

Der Paket-URI für eine Ressourcen Datei, die in die lokale Assembly kompiliert wird, verwendet die folgende Autorität und den folgenden Pfad:The pack URI 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-URI für eine XAMLXAML-Ressourcen Datei, die sich im Stammverzeichnis des Projekt Ordners der lokalen Assembly befindet.The following example shows the pack URI 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-URI für eine XAMLXAML-Ressourcen Datei, die sich in einem Unterordner des Projekt Ordners der lokalen Assembly befindet.The following example shows the pack URI 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

Der Paket-URI für eine Ressourcen Datei, die in eine referenzierte Assembly kompiliert wird, verwendet die folgende Autorität und den folgenden Pfad:The pack URI 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] { ; PublicKey]; Komponente/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-URI für eine XAMLXAML-Ressourcen Datei, die sich im Stammverzeichnis des Projekt Ordners der referenzierten Assembly befindet.The following example shows the pack URI 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-URI für eine XAMLXAML-Ressourcen Datei, die sich in einem Unterordner des Projekt Ordners der Assembly befindet, auf die verwiesen wird.The following example shows the pack URI 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-URI für eine XAMLXAML-Ressourcen Datei, die sich im Stamm Ordner eines referenzierten, Versions spezifischen Assemblyordners befindet.The following example shows the pack URI 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 die Paket-URI-Syntax für referenzierte assemblyressourcendateien nur mit der Application:///Authority verwendet werden kann.Note that the pack URI syntax for referenced assembly resource files can be used only with the application:/// authority. Beispielsweise wird Folgendes in WPFWPFnicht unterstützt.For example, the following is not supported in WPFWPF.

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

Paket-URIs der InhaltsdateiContent File Pack URIs

Der Paket-URI für eine Inhalts Datei verwendet die folgende Autorität und den folgenden Pfad:The pack URI 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-URI für eine XAMLXAML Inhalts Datei, die sich im selben Ordner befindet wie die ausführbare Assembly.The following example shows the pack URI for a XAMLXAML content file, located in the same folder as the executable assembly.

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

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

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

Hinweis

Auf HTML-Inhalts Dateien kann nicht navigiert werden.HTML content files cannot be navigated to. Das URI-Schema unterstützt nur die Navigation zu HTML-Dateien, die sich an der Ursprungs Site befinden.The URI scheme only supports navigation to HTML files that are located at the site of origin.

Paket-URIs der UrsprungssiteSite of Origin Pack URIs

Der Paket-URI für eine Ursprungs Site Datei verwendet die folgende Autorität und den folgenden Pfad:The pack URI 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-URI für eine XAMLXAML Site of Origin-Datei, die an dem Speicherort gespeichert ist, von dem die ausführbare Assembly gestartet wird.The following example shows the pack URI 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-URI für eine XAMLXAML Datei Ursprungs Datei, die in einem Unterordner gespeichert ist, der relativ zu dem Speicherort ist, von dem die ausführbare Assembly der Anwendung gestartet wird.The following example shows the pack URI 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

XAML-Dateien, die als MSBuild-Page Elemente konfiguriert werden, werden auf die gleiche Weise wie Ressourcen Dateien in Assemblys kompiliert.XAML files that are configured as MSBuild Page items are compiled into assemblies in the same way as resource files. Folglich können MSBuild-Page Elemente mithilfe von Paket-URIs für Ressourcen Dateien identifiziert werden.Consequently, MSBuild Page items can be identified using pack URIs for resource files.

Die Typen von XAMLXAML Dateien, die häufig als MSBuild-Page Elemente konfiguriert werden, haben eines der folgenden Elemente als Stamm Element:The types of XAMLXAML files that are commonly configured as MSBuildPage items have one of the following as their root element:

Absolute und relative Paket-URIsAbsolute vs. Relative Pack URIs

Ein voll qualifizierter Paket-URI enthält das Schema, die Autorität und den Pfad und wird als absoluter Paket-URI angesehen.A fully qualified pack URI includes the scheme, the authority, and the path, and it is considered an absolute pack URI. Als Vereinfachung für Entwickler können XAMLXAML Elemente in der Regel geeignete Attribute mit einem relativen Paket-URI festlegen, der nur den Pfad enthält.As a simplification for developers, XAMLXAML elements typically allow you to set appropriate attributes with a relative pack URI, which includes only the path.

Sehen Sie sich beispielsweise den folgenden absoluten Paket-URI für eine Ressourcen Datei in der lokalen Assembly an.For example, consider the following absolute pack URI for a resource file in the local assembly.

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

Der relative Paket-URI, der auf diese Ressourcen Datei verweist, würde folgendermaßen lauten:The relative pack URI that refers to this resource file would be the following.

/ResourceFile.xaml

Hinweis

Da Dateien der Ursprungs Site nicht Assemblys zugeordnet sind, kann auf diese nur mit absoluten Paket-URIs verwiesen werden.Because site of origin files are not associated with assemblies, they can only be referred to with absolute pack URIs.

Standardmäßig wird ein relativer Paket-URI als relativ zum Speicherort des Markups oder Codes betrachtet, das den Verweis enthält.By default, a relative pack URI is considered relative to the location of the markup or code that contains the reference. Wenn jedoch ein führender umgekehrter Schrägstrich verwendet wird, wird der Verweis auf den relativen Paket-URI als relativ zum Stamm der Anwendung betrachtet.If a leading backslash is used, however, the relative pack URI 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 einen URI enthält, der auf root\subfolder\page2.XAML verweist, kann der Verweis den folgenden relativen Paket-URI verwenden.If Page1.xaml contains a URI that references Root\SubFolder\Page2.xaml, the reference can use the following relative pack URI.

Page2.xaml

Wenn "Page1. XAML einen URI enthält, der auf root\page2.XAML verweist, kann der Verweis den folgenden relativen Paket-URI verwenden.If Page1.xaml contains a URI that references Root\Page2.xaml, the reference can use the following relative pack URI.

/Page2.xaml

Paket-URI-AuflösungPack URI Resolution

Das Format von Paket-URIs ermöglicht es, dass Paket-URIs für verschiedene Dateitypen identisch aussehen.The format of pack URIs makes it possible for pack URIs for different types of files to look the same. Sehen Sie sich beispielsweise den folgenden absoluten Paket-URI an.For example, consider the following absolute pack URI.

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

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

/ResourceOrContentFile.xaml

Um den Typ der Datei zu bestimmen, auf die ein Paket-URI verweist, löst WPFWPF URIs für Ressourcen Dateien in lokalen Assemblys und Inhalts Dateien mithilfe der folgenden Heuristik auf:In order to determine the type of file that a pack URI refers to, WPFWPF resolves URIs for resource files in local assemblies and content files by using the following heuristics:

  1. Überprüfen Sie die Assemblymetadaten nach einem AssemblyAssociatedContentFileAttribute Attribut, das dem Paket-URI entspricht.Probe the assembly metadata for an AssemblyAssociatedContentFileAttribute attribute that matches the pack URI.

  2. Wenn das AssemblyAssociatedContentFileAttribute-Attribut gefunden wird, verweist der Pfad des Paket-URIs auf eine Inhalts Datei.If the AssemblyAssociatedContentFileAttribute attribute is found, the path of the pack URI refers to a content file.

  3. Wenn das AssemblyAssociatedContentFileAttribute-Attribut nicht gefunden wird, überprüfen Sie die Ressourcen Dateien, 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 Ressourcen Datei gefunden wird, die mit dem Pfad des Paket-URIs übereinstimmt, verweist der Pfad des Paket-URIs auf eine Ressourcen Datei.If a resource file that matches the path of the pack URI is found, the path of the pack URI refers to a resource file.

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

Die URI-Auflösung gilt nicht für URIs, die Folgendes bezeichnen:URI resolution does not apply for URIs that refer to the following:

  • Inhalts Dateien in referenzierten Assemblys: diese Dateitypen werden von WPFWPFnicht unterstützt.Content files in referenced assemblies: these file types are not supported by WPFWPF.

  • Eingebettete Dateien in referenzierten Assemblys: URIs, die diese identifizieren, sind eindeutig, da Sie sowohl den Namen der referenzierten Assembly als auch das ;component Suffix enthalten.Embedded files in referenced assemblies: URIs that identify them are unique because they include both the name of the referenced assembly and the ;component suffix.

  • Dateien der Ursprungs Site: URIs, die diese identifizieren, sind eindeutig, da Sie die einzigen Dateien sind, die mit Paket-URIs identifiziert werden können, die die siteoforigin:///-Autorität enthalten.Site of origin files: URIs that identify them are unique because they are the only files that can be identified by pack URIs that contain the siteoforigin:/// authority.

Eine Vereinfachung, die die Paket-URI-Auflösung ermöglicht, besteht darin, dass der Code von den Speicherorten von Ressourcen-und Inhalts Dateien sehr unabhängig ist.One simplification that pack URI resolution allows is for code to be somewhat independent of the locations of resource and content files. Wenn Sie z. b. über eine Ressourcen Datei in der lokalen Assembly verfügen, die als Inhalts Datei neu konfiguriert wird, bleibt der Paket-URI für die Ressource unverändert, ebenso wie der Code, der den Paket-URI verwendet.For example, if you have a resource file in the local assembly that is reconfigured to be a content file, the pack URI for the resource remains the same, as does the code that uses the pack URI.

Programmieren mit Paket-URIsProgramming with Pack URIs

Viele WPFWPF Klassen implementieren Eigenschaften, die mit Paket-URIs festgelegt werden können, einschließlich:Many WPFWPF classes implement properties that can be set with pack URIs, 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 Paket-URI wird in Markup angegeben, indem das-Element eines Attributs mit dem Paket-URI festgelegt wird.A pack URI is specified in markup by setting the element of an attribute with the pack URI. Beispiel:For example:

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

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

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

DateiFile Absoluter Paket-URIAbsolute pack URI
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 zeigt die verschiedenen relativen Paket-URIs, die Sie im Markup angeben können.Table 2 illustrates the various relative pack URIs that you can specify in markup.

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

DateiFile Relativer Paket-URIRelative pack URI
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-URI im Code an, indem Sie die Uri-Klasse instanziieren und den Paket-URI als Parameter an den-Konstruktor übergeben.You specify a pack URI in code by instantiating the Uri class and passing the pack URI 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");

Standardmäßig betrachtet die Uri-Klasse die Pack-URIs als absolut.By default, the Uri class considers pack URIs to be absolute. Folglich wird eine Ausnahme ausgelöst, wenn eine Instanz der Uri-Klasse mit einem relativen Paket-URI erstellt wird.Consequently, an exception is raised when an instance of the Uri class is created with a relative pack URI.

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

Glücklicherweise akzeptiert die Uri(String, UriKind) Überladung des Uri-Klassenkonstruktors einen Parameter des Typs UriKind, damit Sie angeben können, ob ein Paket-URI absolut oder relativ ist.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 URI 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 Absolute oder Relative angeben, wenn Sie sicher sind, dass es sich bei dem bereitgestellten Paket-URI um einen oder den anderen handelt.You should specify only Absolute or Relative when you are certain that the provided pack URI is one or the other. Wenn Sie nicht wissen, welcher Typ von Paket-URI verwendet wird, z. b. Wenn ein Benutzer zur Laufzeit einen Paket-URI eingibt, verwenden Sie stattdessen RelativeOrAbsolute.If you don't know the type of pack URI that is used, such as when a user enters a pack URI 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 zeigt die verschiedenen relativen Paket-URIs, die Sie im Code mithilfe von System.Uri angeben können.Table 3 illustrates the various relative pack URIs that you can specify in code by using System.Uri.

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

DateiFile Absoluter Paket-URIAbsolute pack URI
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 zeigt die verschiedenen relativen Paket-URIs, die Sie im Code mithilfe von System.Uri angeben können.Table 4 illustrates the various relative pack URIs that you can specify in code using System.Uri.

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

DateiFile Relativer Paket-URIRelative pack URI
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 Paket-URIs zum Identifizieren von Ressourcen, Inhalten und Ursprungs Dateien erstellt werden.The preceding sections have discussed how to construct pack URIs to identify resource, content, and site of origin files. In WPFWPFwerden diese Konstruktionen auf verschiedene Weise verwendet, und in den folgenden Abschnitten werden verschiedene gängige Verwendungen behandelt.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 den ersten UIUI an, der angezeigt werden soll, wenn eine WPFWPF Anwendung gestartet wird.StartupUri specifies the first UIUI to show when a WPFWPF application is launched. Bei eigenständigen Anwendungen kann das UIUI 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-Browser Anwendungen (XBAPs) können auch eine Seite als anfängliche Benutzeroberfläche angeben, wie im folgenden Beispiel gezeigt.Standalone applications and 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 es sich bei der Anwendung um eine eigenständige Anwendung handelt und eine Seite mit StartupUriangegeben wird, wird WPFWPF ein NavigationWindow zum Hosten der Seite geöffnet.If the application is a standalone application and a page is specified with StartupUri, WPFWPF opens a NavigationWindow to host the page. Für XBAPs wird die Seite im Host Browser angezeigt.For XBAPs, 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 WPFWPFfinden 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

mit WPFWPF können Anwendungen eine Vielzahl von Medientypen verwenden, die alle identifiziert und mit Paket-URIs geladen werden können, wie in den folgenden Beispielen gezeigt.WPFWPF allows applications to use a wide variety of media types, all of which can be identified and loaded with pack URIs, 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

Ressourcen Wörterbücher (ResourceDictionary) können verwendet werden, um Anwendungs Designs 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. Diese Ressourcen Wörterbücher können mithilfe von Paket-URIs identifiziert und geladen werden, wie im folgenden Beispiel gezeigt.These resource dictionaries can be identified and loaded using pack URIs, 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 die Designs in WPFWPFfinden Sie unter Erstellen von Formaten undVorlagen.For an overview of themes in WPFWPF, see Styling and Templating.

Siehe auchSee also