Frage

Ich habe Ressourcenwörterbuchdateien (MenuTemplate.xaml, ButtonTemplate.xaml, usw.), die ich in mehreren separaten Anwendungen verwenden möchten. Ich kann sie auf die Baugruppen Anwendungen hinzufügen, aber es ist besser, wenn ich diese Ressourcen in einer einzigen Baugruppe zusammenstellen und meine Anwendungen auf sie verweisen, nicht wahr?

Nachdem die Ressourcenanordnung aufgebaut ist, wie kann ich darauf verweisen in der App.xaml meiner Anwendungen? Derzeit verwende ich ResourceDictionary.MergedDictionaries die einzelnen Wörterbuchdateien zu verschmelzen. Wenn ich sie in einer Baugruppe, wie kann ich auf sie verweisen in XAML?

War es hilfreich?

Lösung

Überprüfen Sie die URI-Syntax packen. Sie wollen etwas wie folgt aus:

<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>

Andere Tipps

Ein Beispiel, nur um diese eine 15 Sekunden Antwort -

Sagen Sie „Styles.xaml“ in einer WPF-Bibliothek mit dem Namen „common“ und Sie wollen, es benutzen von Ihrem Hauptanwendungsprojekt:

  1. Fügen Sie einen Verweis aus dem Hauptprojekt „gemeinsames“ Projekt
  2. Ihre app.xaml sollte enthalten:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Prost

Ich arbeite mit 4,5 .NET und nicht diese Arbeit bekommen konnte ... Ich war mit WPF Custom Control-Bibliothek. Dieser arbeitete für mich am Ende ...

<ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />

Quelle: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/11a42336-8d87-4656-91a3-275413d3cc19

Resource-Only-DLL ist eine Option für Sie. Aber es ist nicht unbedingt erforderlich, wenn Sie Ressourcen ändern, ohne neu zu kompilieren Anwendungen wollen. Haben nur eine gemeinsame Resource Datei auch eine Option. Es hängt davon ab, wie oft Sie Ressourcen ändern und etc.

<ResourceDictionary Source="pack://application:,,,/
     <MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>

MyAssembly - Just Montage ohne Erweiterung benennen

FolderStructureInAssembly - Wenn Sie Ihre Ressourcen in einer folde sind, Ordnerstruktur angeben

Wenn Sie dies tun, ist es besser zu wissen, siteOfOrigin als auch.

  

WPF unterstützt zwei Behörden: Anwendung: /// und siteoforigin: ///.   Die Anwendung: /// Behörde Anwendungsdatendateien identifiziert,   bei der Kompilierung, einschließlich Ressourcen- und Inhaltsdateien sind bekannt. Das   siteoforigin: /// Behörde einen Standort Ursprungsdateien. Der Geltungsbereich   jede Behörde ist in der folgenden Abbildung.

gezeigt

eingeben Bild Beschreibung hier

Für UWP:

<ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />

Verwenden von XAML:

Wenn Sie wissen, die andere assembly Struktur und wollen die resources in c # Code, dann unter Code verwenden:

 ResourceDictionary dictionary = new ResourceDictionary();
 dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
 foreach (var item in dictionary.Values)
 {
    //operations
 }

Ausgabe:. Wenn wir wollen, ResourceDictionary RD1.xaml Projekt WpfControlLibrary1 in StackOverflowApp Projekt verwenden

Struktur von Projekten :

Resource-Wörterbuch: Ressourcen Wörterbuch

Code-Ausgabe:

PS:. Alle ResourceDictionary Dateien sollten Build Action als 'Resource' oder 'Page' haben

Verwenden von C #:

  

Wenn jemand will, um die Lösung in rein c # -Code dann sieht meine diese   Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top