Paket-URI in WPF
In Windows Presentation Foundation (WPF) werden Uniform Resource Identifier (URIs) verwendet, um Dateien auf viele Arten zu identifizieren und zu laden, darunter:
Angeben der Benutzeroberfläche (UI), die beim ersten Starten einer Anwendung angezeigt werden soll.
Laden von Bildern
Navigieren zu Seiten
Laden von nicht ausführbaren Datendateien
Darüber hinaus können Sie mit URIs Dateien an einer Vielzahl von Speicherorten identifizieren und laden, darunter die folgenden:
Die aktuelle Assembly.
Eine Assembly, auf die verwiesen wird.
Ein zu einer Assembly relativer Speicherort.
Die Ursprungssite der Anwendung.
Um einen einheitlichen Mechanismus zum Identifizieren und Laden dieser Dateitypen von den Speicherorten bieten zu können, nutzt WPF die Erweiterbarkeit des Paket-URI-Schemas. In diesem Thema erhalten Sie eine Übersicht über das Schema, und Sie erfahren, wie Sie Paket-URIs für verschiedene Szenarien erstellen. Außerdem werden absolute und relative URIs- und URI-Auflösung behandelt. Anschließend wird gezeigt, wie Sie Paket-URIs in Markup und Code verwenden.
Das Paket-URI-Schema
Das Paket-URI-Schema wird von der OPC-Spezifikation (Open Packaging Conventions) verwendet, die ein Modell zum Organisieren und Identifizieren von Inhalt beschreibt. Die wichtigsten Elemente dieses Modells sind Pakete und Teile, wobei ein Paket einen logischen Container für mindestens ein logisches Teil darstellt. Die folgende Abbildung veranschaulicht dieses Konzept.
Wenn es um das Identifizieren von Teilen geht, nutzt die OPC-Spezifikation die Erweiterbarkeit von RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax), um das Paket-URI-Schema zu definieren.
Das durch einen URI angegebene Schema wird durch sein Präfix definiert, z. B. HTTP, FTP und Datei. Das Paket-URI-Schema verwendet „Paket“ als Schema und enthält die zwei Komponenten „Autorität“ und „Pfad“. Ein Paket-URI wird im folgenden Format geschrieben.
Paket://Autorität/Pfad
Mit Autorität wird der Pakettyp angegeben, in dem ein Teil enthalten ist, und Pfad bezeichnet den Speicherort eines Teils innerhalb des Pakets.
Dieses Konzept wird in der folgenden Abbildung verdeutlicht:
Pakete und Teile entsprechen Anwendungen und Dateien: eine Anwendung (ein Paket) kann eine oder mehrere Dateien (Teile) enthalten, darunter:
Ressourcendateien, die in die lokale Assembly kompiliert werden
Ressourcendateien, die in eine Assembly kompiliert werden, auf die verwiesen wird
Ressourcendateien, die in eine verweisende Assembly kompiliert werden
Inhaltsdateien
Dateien der Ursprungssite
Um auf diese Dateitypen zugreifen zu können, unterstützt WPF zwei Autoritäten: application:/// und siteoforigin:///. Durch die Autorität „application:///“ werden Anwendungsdatendateien identifiziert, die zur Kompilierungszeit bekannt sind, darunter Ressourcen- und Inhaltsdateien. Durch die Autorität „siteoforigin:///“ werden die Dateien der Ursprungssite identifiziert. Der Bereich der Autoritäten wird in der folgenden Abbildung veranschaulicht.
Hinweis
Die Autoritätskomponente eines Paket-URIs ist ein eingebetteter URI, der auf ein Paket verweist und RFC 2396 entsprechen muss. Außerdem muss das Zeichen „/“ durch „,“ ersetzt werden, und reservierte Zeichen wie „%“ und „?“ müssen mit Escapezeichen versehen werden. Ausführliche Informationen finden Sie in der OPC.
In den folgenden Abschnitten wird erläutert, wie Sie Paket-URIs mit diesen beiden Autoritäten in Verbindung mit den entsprechenden Pfaden zum Identifizieren von Ressourcen- und Inhaltsdateien sowie Dateien der Ursprungssite erstellen.
Paket-URIs der Ressourcendatei
Ressourcendateien sind als MSBuild-Elemente von Resource
konfiguriert und werden in Assemblys kompiliert. WPF unterstützt die Erstellung von Paket-URIs, mit denen Ressourcendateien identifiziert werden können, die entweder in die lokale Assembly kompiliert wurden oder in eine Assembly, auf die von der lokalen Assembly verwiesen wird.
Ressourcendatei der lokalen Assembly
Der Paket-URI für eine Ressourcendatei, die in die lokale Assembly kompiliert wurde, verwendet folgende Autorität und folgenden Pfad:
Autorität: application:///.
Pfad: Der Name der Ressourcendatei, einschließlich des Pfads, relativ zum Stammverzeichnis des Projektordners der lokalen Assembly.
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Ressourcendatei, die im Stammverzeichnis des Projektordners der lokalen Assembly gespeichert ist.
pack://application:,,,/ResourceFile.xaml
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Ressourcendatei, die in einem Unterordner des Projektordners der lokalen Assembly gespeichert ist.
pack://application:,,,/Subfolder/ResourceFile.xaml
Ressourcendatei der Assembly, auf die verwiesen wird
Der Paket-URI für eine Ressourcendatei, die in eine Assembly kompiliert wurde, auf die verwiesen wird, verwendet folgende Autorität und folgenden Pfad:
Autorität: application:///.
Pfad: Der Name einer Ressourcendatei, die in eine Assembly kompiliert wurde, auf die verwiesen wird. Der Pfad muss dem folgenden Format entsprechen:
AssemblyShortName{;Version]{;PublicKey];Komponente/Pfad
AssemblyShortName: Der Kurzname für die Assembly, auf die verwiesen wird.
;Version [optional]: Die Version der Assembly, auf die verwiesen wird, die die Ressourcendatei enthält. Wird verwendet, wenn mindestens zwei Assemblys, auf die verwiesen wird und die über denselben Kurznamen verfügen, geladen werden.
;PublicKey [optional]: Der öffentliche Schlüssel, der zum Signieren der Assembly verwendet wird, auf die verwiesen wird. Wird verwendet, wenn mindestens zwei Assemblys, auf die verwiesen wird und die über denselben Kurznamen verfügen, geladen werden.
;component: Gibt an, dass von der lokalen Assembly auf die Assembly verwiesen wird.
/Path: Der Name der Ressourcendatei, einschließlich des Pfads, relativ zum Stammverzeichnis des Projektordners der Assembly, auf die verwiesen wird.
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Ressourcendatei, die im Stammverzeichnis des Projektordners der Assembly gespeichert ist, auf die verwiesen wird.
pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Ressourcendatei, die in einem Unterordner des Projektordners der Assembly gespeichert ist, auf die verwiesen wird.
pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Ressourcendatei, die im Stammverzeichnis des Projektordners einer versionsspezifischen Assembly gespeichert ist, auf die verwiesen wird.
pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml
Beachten Sie, dass die Syntax des Paket-URIs für Ressourcendateien einer Assembly, auf die verwiesen wird, nur mit der Autorität „application:///“ verwendet werden kann. Folgendes wird in WTF z. B. nicht unterstützt.
pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml
Paket-URIs der Inhaltsdatei
Der Paket-URI für eine Inhaltsdatei verwendet folgende Autorität und folgenden Pfad:
Autorität: application:///.
Pfad: Der Name der Inhaltsdatei, einschließlich des Pfads, relativ zum Speicherort des Dateisystems der ausführbaren Hauptassembly der Anwendung.
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Inhaltsdatei, die in demselben Ordner wie die ausführbare Assembly gespeichert ist.
pack://application:,,,/ContentFile.xaml
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Inhaltsdatei, die in einem Unterordner gespeichert ist, der relativ zur ausführbaren Assembly der Anwendung ist.
pack://application:,,,/Subfolder/ContentFile.xaml
Hinweis
Zu HTML-Inhaltsdateien kann nicht navigiert werden. Das URI-Schema unterstützt nur die Navigation zu HTML-Dateien, die auf der Ursprungssite gespeichert sind.
Paket-URIs der Ursprungssite
Der Paket-URI für eine Datei der Ursprungssite verwendet folgende Autorität und folgenden Pfad:
Autorität: siteoforigin:///.
Pfad: Der Name der Datei der Ursprungssite, einschließlich des Pfads, relativ zum Speicherort, von dem die ausführbare Assembly gestartet wurde.
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Datei der Ursprungssite, die sich an dem Speicherort befindet, von dem die ausführbare Assembly gestartet wird.
pack://siteoforigin:,,,/SiteOfOriginFile.xaml
Das folgende Beispiel zeigt den Paket-URI für eine XAML-Datei der Ursprungssite, die in einem Unterordner gespeichert ist, der relativ zu dem Speicherort ist, von dem die ausführbare Assembly der Anwendung gestartet wird.
pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml
Seitendateien
XAML-Dateien, die als MSBuils-Elemente von Page
konfiguriert sind, werden auf dieselbe Weise in Assemblys kompiliert wie Ressourcendateien. Daher können MSBuild-Elemente von Page
mithilfe von Paket-URIs für Ressourcendateien identifiziert werden.
Die Typen von XAML-Dateien, die in der Regel als MSBuild-Elemente von Page
konfiguriert sind, haben eines der folgenden Elemente als Stammelement:
Absolute und relative Paket-URIs
Ein vollqualifizierter Paket-URI beinhaltet Schema, Autorität und Pfad und wird als absoluter Paket-URI bezeichnet. XAML-Elemente ermöglichen normalerweise das Festlegen entsprechender Attribute mit einem relativen Paket-URI, der nur den Pfad enthält. Dies erleichtert Entwicklern die Arbeit.
Betrachten Sie beispielsweise den folgenden absoluten Paket-URI für eine Ressourcendatei in der lokalen Assembly.
pack://application:,,,/ResourceFile.xaml
Der relative Paket-URI, der auf diese Ressourcendatei verweist, wäre folgender.
/ResourceFile.xaml
Hinweis
Da Dateien der Ursprungssite nicht mit Assemblys verknüpft sind, kann auf sie nur mit absoluten Paket-URIs verwiesen werden.
Standardmäßig wird ein relativer Paket-URI als relativ zum Speicherort des Markups oder Codes betrachtet, in dem der Verweis enthalten ist. Wird ein vorangestellter umgekehrter Schrägstrich verwendet, wird der Verweis des relativen Paket-URIs jedoch als relativ zum Stammverzeichnis der Anwendung angesehen. Betrachten Sie beispielsweise die folgende Projektstruktur:
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.
Page2.xaml
Wenn „Page1.xaml“ einen URI enthält, der auf „Root\Page2.xaml“ verweist, kann der Verweis den folgenden relativen Paket-URI verwenden.
/Page2.xaml
Paket-URI-Auflösung
Das Format des Paket-URIs ermöglicht es, dass Paket-URIs verschiedener Dateitypen gleich aussehen. Betrachten Sie z. B. folgenden absoluten Paket-URI.
pack://application:,,,/ResourceOrContentFile.xaml
Dieser absolute Paket-URI könnte entweder auf eine Ressourcendatei in der lokalen Assembly oder auf eine Inhaltsdatei verweisen. Das gilt auch für folgenden relativen URI.
/ResourceOrContentFile.xaml
Um den Dateityp zu bestimmen, auf den ein Paket-URI verweist, löst WTF die URIs für Ressourcendateien in lokalen Assemblys und Inhaltsdateien mit folgender Heuristik auf:
Prüfen Sie die Metadaten der Assembly auf ein AssemblyAssociatedContentFileAttribute-Attribut, das mit dem Paket-URI übereinstimmt.
Wenn das AssemblyAssociatedContentFileAttribute-Attribut gefunden wird, verweist der Pfad des Paket-URIs auf eine Inhaltsdatei.
Wird das AssemblyAssociatedContentFileAttribute-Attribut nicht gefunden, überprüfen Sie die festgelegten Ressourcendateien, die in die lokale Assembly kompiliert werden.
Wird eine Ressourcendatei gefunden, die dem Pfad des Paket-URIs entspricht, verweist der Pfad des Paket-URIs auf eine Ressourcendatei.
Wenn die Ressource nicht gefunden wird, ist der intern erstellte Uri ungültig.
Die URI-Auflösung gilt nicht für URIs, die auf folgende Dateien verweisen:
Inhaltsdateien in Assemblys, auf die verwiesen wird: diese Dateitypen werden von WPF nicht unterstützt.
Eingebettete Dateien in Assemblys, auf die verwiesen wird: URIs, die diese Dateien identifizieren, sind eindeutig, da sie sowohl den Namen der Assembly enthalten, auf die verwiesen wird, als auch das Suffix
;component
.Dateien der Ursprungssite: URIs, die diese Dateien identifizieren, sind eindeutig, da es die einzigen Dateien sind, die durch Paket-URIs mit der Autorität „siteoforigin:///“ identifiziert werden können.
Eine Vereinfachung, die eine Auflösung des Paket-URIs bietet, liegt darin, dass Code in gewisser Weise von den Speicherorten der Ressourcen- und Inhaltsdateien unabhängig ist. Wenn Sie beispielsweise eine Ressourcendatei in der lokalen Assembly haben, die in eine Inhaltsdatei umkonfiguriert wird, bleibt der Paket-URI für die Ressource derselbe, genau wie der Code, der den Paket-URI verwendet.
Programmieren mit Paket-URIs
Viele WPF-Klassen implementieren Eigenschaften, die mit Paket-URI festgelegt werden können, darunter:
Diese Eigenschaften können sowohl im Markup als auch im Code festgelegt werden. In diesem Abschnitt werden die grundlegenden Konstruktionen beider Varianten beschrieben, und es werden Beispiele für allgemeine Szenarien gezeigt.
Verwenden von Paket-URIs im Markup
Ein Paket-URI wird im Markup durch Festlegen des Elements eines Attributs mit dem Paket-URI angegeben. Beispiel:
<element attribute="pack://application:,,,/File.xaml" />
In Tabelle 1 sehen Sie die verschiedenen absoluten Paket-URIs, die Sie im Markup angeben können.
Tabelle 1: Absolute Paket-URIs im Markup
Datei | Absoluter Paket-URI |
---|---|
Ressourcendatei – lokale Assembly | "pack://application:,,,/ResourceFile.xaml" |
Ressourcendatei im Unterordner – lokale Assembly | "pack://application:,,,/Subfolder/ResourceFile.xaml" |
Ressourcendatei – Assembly, auf die verwiesen wird | "pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml" |
Ressourcendatei im Unterordner der Assembly, auf die verwiesen wird | "pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml" |
Ressourcendatei in Assembly mit Versionsangabe, auf die verwiesen wird | "pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml" |
Inhaltsdatei | "pack://application:,,,/ContentFile.xaml" |
Inhaltsdatei im Unterordner | "pack://application:,,,/Subfolder/ContentFile.xaml" |
Datei der Ursprungssite | "pack://siteoforigin:,,,/SOOFile.xaml" |
Datei der Ursprungssite im Unterordner | "pack://siteoforigin:,,,/Subfolder/SOOFile.xaml" |
In Tabelle 2 sehen Sie die verschiedenen relativen Paket-URIs, die Sie im Markup angeben können.
Tabelle 2: Relative Paket-URIs im Markup
Datei | Relativer Paket-URI |
---|---|
Ressourcendatei in lokaler Assembly | "/ResourceFile.xaml" |
Ressourcendatei im Unterordner der lokalen Assembly | "/Subfolder/ResourceFile.xaml" |
Ressourcendatei in Assembly, auf die verwiesen wird | "/ReferencedAssembly;component/ResourceFile.xaml" |
Ressourcendatei im Unterordner der Assembly, auf die verwiesen wird | "/ReferencedAssembly;component/Subfolder/ResourceFile.xaml" |
Inhaltsdatei | "/ContentFile.xaml" |
Inhaltsdatei im Unterordner | "/Subfolder/ContentFile.xaml" |
Verwenden von Paket-URIs im 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. Dies wird im folgenden Beispiel veranschaulicht.
Uri uri = new Uri("pack://application:,,,/File.xaml");
Standardmäßig sieht die Uri-Klasse Paket-URIs als absolut an. Daher wird eine Ausnahme ausgelöst, wenn eine Instanz der Uri-Klasse mit einem relativen Paket-URI erstellt wird.
Uri uri = new Uri("/File.xaml");
Glücklicherweise akzeptiert die Uri(String, UriKind)-Überladung des Uri-Klassenkonstruktors einen Parameter des Typs UriKind, mit dem Sie angeben können, ob ein Paket-URI absolut oder relativ ist.
// 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 dann Absolute oder Relative angeben, wenn Sie sicher sind, dass es sich bei dem bereitgestellten Paket-URI um einen der beiden Typen handelt. Wenn Sie nicht wissen, welcher Typ von Paket-URI verwendet wird, beispielsweise wenn ein Benutzer zur Laufzeit einen Paket-URI angibt, verwenden Sie stattdessen RelativeOrAbsolute.
// Relative or Absolute URI provided by user via a text box
TextBox userProvidedUriTextBox = new TextBox();
Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);
In Tabelle 3 sehen Sie die verschiedenen relativen Paket-URIs, die Sie im Code mit System.Uri angeben können.
Tabelle 3: Absolute Paket-URIs im Code
Datei | Absoluter Paket-URI |
---|---|
Ressourcendatei – lokale Assembly | Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute); |
Ressourcendatei im Unterordner – lokale Assembly | Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute); |
Ressourcendatei – Assembly, auf die verwiesen wird | Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute); |
Ressourcendatei im Unterordner der Assembly, auf die verwiesen wird | Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute); |
Ressourcendatei in Assembly mit Versionsangabe, auf die verwiesen wird | Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute); |
Inhaltsdatei | Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute); |
Inhaltsdatei im Unterordner | Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute); |
Datei der Ursprungssite | Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute); |
Datei der Ursprungssite im Unterordner | Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute); |
In Tabelle 4 sehen Sie die verschiedenen relativen Paket-URIs, die Sie im Code mit System.Uri angeben können.
Tabelle 4: Relative Paket-URIs im Code
Datei | Relativer Paket-URI |
---|---|
Ressourcendatei – lokale Assembly | Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative); |
Ressourcendatei im Unterordner – lokale Assembly | Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative); |
Ressourcendatei – Assembly, auf die verwiesen wird | Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative); |
Ressourcendatei im Unterordner – Assembly, auf die verwiesen wird | Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative); |
Inhaltsdatei | Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative); |
Inhaltsdatei im Unterordner | Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative); |
Häufige Szenarien mit Paket-URIs
In den vorherigen Abschnitten wurde erläutert, wie Sie Paket-URIs zum Identifizieren von Ressourcen- und Inhaltsdateien sowie Dateien der Ursprungssite erstellen. In WPF werden diese Konstruktionen auf unterschiedlichste Weise verwendet. In den folgenden Abschnitten werden einige gängige Möglichkeiten vorgestellt.
Angeben der Benutzeroberfläche, die beim Starten einer Anwendung angezeigt werden soll
StartupUri gibt die erste Benutzeroberfläche an, die angezeigt wird, wenn eine WPF-Anwendung gestartet wird. Bei eigenständigen Anwendungen kann die Benutzeroberfläche ein Fenster sein, wie im folgenden Beispiel gezeigt.
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
StartupUri="MainWindow.xaml" />
Eigenständige Anwendungen und XAML-Browseranwendungen (XBAPs) können auch eine Seite als erste Benutzeroberfläche angeben, wie im folgenden Beispiel gezeigt.
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
StartupUri="HomePage.xaml" />
Wenn die Anwendung eine eigenständige Anwendung ist und eine Seite mit StartupUri angegeben wird, öffnet WPF einen NavigationWindow, um die Seite zu hosten. Bei XBAPs wird die Seite im Hostbrowser angezeigt.
Navigieren zu einer Seite
Im folgenden Beispiel wird das Navigieren zu einer Seite veranschaulicht.
<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 Navigationsmöglichkeiten in WPF finden Sie unter Übersicht über die Navigation.
Angeben eines Fenstersymbols
Im folgenden Beispiel wird gezeigt, wie Sie mithilfe eines URIs das Symbol eines Fensters angeben.
<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.
Laden von Bild-, Audio- und Videodateien
WPF ermöglicht Anwendungen das Verwenden einer Vielzahl von Medientypen, die alle mit Paket-URIs identifiziert und geladen werden können, wie in den folgenden Beispielen gezeigt.
<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.
Laden eines Ressourcenverzeichnisses von der Ursprungssite
Ressourcenwörterbücher (ResourceDictionary) können zur Unterstützung von Anwendungsdesigns verwendet werden. 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. Dadurch können Designs hinzugefügt und aktualisiert werden, ohne dass eine Anwendung erneut kompiliert und bereitgestellt werden muss. Die Ressourcenwörterbücher können mithilfe von Paket-URIs identifiziert und geladen werden, wie im folgenden Beispiel gezeigt.
<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 WPF finden Sie unter Erstellen von Formaten und Vorlagen.
Siehe auch
.NET Desktop feedback