Zusammengeführte Ressourcenwörterbücher

 

Veröffentlicht: Juni 2016

Windows Presentation Foundation (WPF)Ressourcen unterstützen ein Feature für zusammengeführte Ressourcenwörterbücher. Diese Funktion bietet eine Möglichkeit, den Ressourcenteil Definieren einer Entity with relative path '../Token/TLA2%23tla_winclient_md.md' can not be found, for source topic '{"project_id":"3fedad16-eaf1-41a6-8f96-0c1949c68f32","entity_id":"d159531f-05d4-49fd-b951-c332de51e5bc","entity_type":"Article","locale":"de-DE"}'. außerhalb der kompilierten Anwendung XAML Anwendung. Ressourcen können dann anwendungsübergreifend freigegeben werden und sind auch mehrere bequem für die Lokalisierung isoliert.

Im Markup verwenden Sie die folgende Syntax, um ein zusammengeführtes Ressourcenwörterbuch in eine Seite einzuführen:

  <Page.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="myresourcedictionary.xaml"/>
        <ResourceDictionary Source="myresourcedictionary2.xaml"/>
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Page.Resources>

Beachten Sie, dass die ResourceDictionary -Element verfügt nicht über ein X: Key-Direktive, die im Allgemeinen für alle Elemente in einer ressourcenauflistung erforderlich ist. Jedoch auf eine andere ResourceDictionary -Verweis innerhalb der MergedDictionaries Auflistung ist ein Sonderfall, der für dieses Szenario mit zusammengeführten Ressourcenwörterbüchern reserviert. Die ResourceDictionary wird ein zusammengeführtes Ressourcenwörterbuch kein X: Key-Direktive. In der Regel jeder ResourceDictionary innerhalb der MergedDictionaries Auflistung angibt, die eine Quelle Attribut. Der Wert der Quelle sollte ein Uniform Resource Identifier (URI) , der auf den Speicherort der zusammenzuführenden Ressourcendatei auflöst. Das Ziel, URI muss eine andere XAML -Datei mit ResourceDictionary als Stammelement.

System_CAPS_ICON_note.jpg Hinweis

Es ist zulässig, Ressourcen in Definieren einer ResourceDictionary angegebenen als zusammengeführtes Wörterbuch, entweder als Alternative zur Angabe Quelle, oder zusätzlich zu sonstigen Ressourcen aus der angegebenen Quelle eingeschlossen sind. Dies ist jedoch kein häufiges Szenario. Das Hauptszenario für zusammengeführte Wörterbücher werden Ressourcen aus externen Dateispeicherorten zusammenführen. Wenn Sie Ressourcen in das Markup für eine Seite angeben möchten, sollten Sie in der Regel definieren, diese im Hauptfenster ResourceDictionary und nicht in den zusammengeführten Wörterbüchern.

Ressourcen in einem zusammengeführten Wörterbuch belegen einen Speicherort im Bereich Suche Ressource, die direkt hinter dem Bereich des Wörterbuchs Hauptressourcendatei sie zusammengeführt werden. Obwohl ein Ressourcenschlüssel in einem einzelnen Wörterbuch eindeutig sein muss, kann ein Schlüssel mehrere Male in einem Satz von zusammengeführten Wörterbüchern vorhanden. In diesem Fall stammt die zurückgegebene Ressource aus dem letzten Wörterbuch sequenziell in der MergedDictionaries Auflistung. Wenn die MergedDictionaries Auflistung definiert wurde, XAML, dann ist die Reihenfolge der zusammengeführten Wörterbücher in der Auflistung der Reihenfolge der Elemente im Markup bereitgestellt. Wenn ein Schlüssel im primären Wörterbuch und auch in ein Wörterbuch, das zusammengeführt wurde, definiert ist, wird die zurückgegebene Ressource aus dem primären Wörterbuch stammen. Diese Bereichsregeln gelten gleichermaßen für statische und dynamische Ressourcen verweisen.

Zusammengeführte Wörterbücher und Code

Zusammengeführte Wörterbüchern können hinzugefügt werden, um ein Resources Wörterbuch über Code. Die Standardeinstellung, die zunächst leer ResourceDictionary , vorhanden ist, für alle Resources Eigenschaft verfügt auch über eine standardmäßige und anfangs leere MergedDictionaries Auflistungseigenschaft. Um ein zusammengeführtes Wörterbuch über Code hinzuzufügen, erhalten Sie einen Verweis auf das gewünschte primäre ResourceDictionary, erhalten die MergedDictionaries Eigenschaftswert, und rufen Add für den generischen Collection in enthaltenen MergedDictionaries. Das Objekt, das Sie hinzufügen, muss ein neues ResourceDictionary. Im Code nicht Festlegen der Quelle Eigenschaft. In diesem Fall benötigen Sie ein ResourceDictionary Objekt, indem Sie entweder eins erstellen oder laden. Eine Möglichkeit zum Laden einer vorhandenen ResourceDictionary Aufrufen XamlReader.Load auf einer vorhandenen XAML Datei-Stream hat eine ResourceDictionary Stamm, klicken Sie dann die Umwandlung der XamlReader.Load -Rückgabewert in ResourceDictionary.

Zusammengeführte Wörterbuch URIs

Es gibt verschiedene Methoden zum ein zusammengeführtes Ressourcenwörterbuch, enthalten die von angegeben werden die Uniform Resource Identifier (URI) Format, das Sie verwenden möchten. Grob gesagt, diese Techniken können werden in zwei Kategorien unterteilt: Ressourcen, die als Teil des Projekts kompiliert werden und Ressourcen, die nicht als Teil des Projekts kompiliert werden.

Für Ressourcen, die als Teil des Projekts kompiliert werden, können Sie einen relativen Pfad, der auf den Speicherort der Ressource verweist. Der relative Pfad wird während der Kompilierung ausgewertet. Die Ressource muss als Teil des Projekts als eine Ressource-Buildvorgang definiert werden. Wenn Sie eine Ressourcen-XAML-Datei im Projekt als Ressource einschließen, Sie müssen nicht die Ressourcen-Datei in das Ausgabeverzeichnis kopieren, die Ressource bereits in der kompilierten Anwendung enthalten ist. Sie können auch verwenden, aber müssen Sie dann die Dateien in das Ausgabeverzeichnis kopieren und auch die Ressourcendateien in der gleichen Beziehung für den Pfad zur ausführbaren Datei bereitstellen.

System_CAPS_ICON_note.jpg Hinweis

Verwenden Sie nicht die Buildaktion der eingebetteten Ressource. Der Buildvorgang selbst wird unterstützt, für Entity with relative path '../Token/TLA2%23tla_winclient_md.md' can not be found, for source topic '{"project_id":"3fedad16-eaf1-41a6-8f96-0c1949c68f32","entity_id":"d159531f-05d4-49fd-b951-c332de51e5bc","entity_type":"Article","locale":"de-DE"}'. Applikationen, aber die Auflösung des Quelle besitzt nicht ResourceManager, und daher kann nicht aus dem Datenstrom die jeweiligen Ressource zu trennen. Weiterhin können Sie eingebettete Ressource für andere Zwecke, solange Sie auch verwendet ResourceManager auf die Ressourcen zugreifen.

Eine verwandte Methode ist die Verwendung einer Paket-URI für eine XAML Datei, und verweisen sie als Quelle. Paket-URI ermöglicht Verweise auf Komponenten von Assemblys verwiesen wird, und anderen Techniken. Weitere Informationen über Paket-URIs finden Sie unter WPF-Anwendungsressource, Inhalt und Datendateien.

Für Ressourcen, die nicht als Teil des Projekts kompiliert werden, wird der URI zur Laufzeit ausgewertet. Sie können einen allgemeinen URI-Transport verwenden, z. B. Datei: oder http: um auf die Ressourcendatei verweisen. Der Nachteil bei der Verwendung des Ressource nicht kompiliertem Ansatzes ist die Datei: Zugriff erfordert zusätzliche Bereitstellungsschritte und http: Access beinhaltet die Internetzone.

Wiederverwendung von zusammengeführten Wörterbüchern

Sie können wiederverwenden oder zusammengeführte Ressourcenwörterbücher zwischen Programmen, zu teilen, weil das Ressourcenverzeichnis zusammenführen kann, über eine verwiesen werden gültige Uniform Resource Identifier (URI). Genau wie Sie dabei vorgehen, hängt von der Bereitstellungsstrategie für die Anwendung und dem verwendeten Anwendungsmodell folgen. Die oben genannten Paket-URI-Strategie bietet eine Möglichkeit, häufig eine zusammengeführte Ressource für mehrere Projekte während der Entwicklung Quelle durch Verweis auf eine Assembly freigeben. In diesem Szenario werden die Ressourcen weiterhin vom Client verteilt, und muss mindestens eine Anwendung die referenzierte Assembly bereitstellen. Es ist auch möglich, zusammengeführte Ressourcen durch einen verteilten URI verweisen, die das http-Protokoll verwendet.

Schreiben den zusammengeführte Wörterbüchern lokale Anwendung Dateien oder in den lokalen freigegebenen Speicher ist eine andere mögliche zusammengeführtes Wörterbuch / Anwendungsbereitstellungsszenario.

Lokalisierung

Wenn Sie Ressourcen, die lokalisiert werden müssen, in Wörterbüchern isoliert werden, die in den primären Wörterbüchern zusammengeführt und als lose beibehalten XAML, diese Dateien separat lokalisiert werden können. Diese Technik ist eine einfache Alternative zur Lokalisierung der Satellitenressourcenassemblys. Weitere Informationen finden Sie unter WPF-Globalisierung und Lokalisierung: Übersicht.

ResourceDictionary
XAML-Ressourcen
Ressourcen und Code
WPF-Anwendungsressource, Inhalt und Datendateien

Anzeigen: