Le chargement de ResourceDictionary fusionné à partir d'un autre assembly a échoué
J'ai mis toutes mes application ResourceDictionaries dans une assemblée distincte et de les fusionner en un seul ResourceDictionary qui je veux inclure comme une ressource dans ma demande:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="InputStyles.xaml"/>
<ResourceDictionary Source="DataGridStyles.xaml"/>
<ResourceDictionary Source="ComboboxStyles.xaml"/>
<ResourceDictionary Source="CheckboxStyles.xaml"/>
<ResourceDictionary Source="TabControlStyles.xaml"/>
<ResourceDictionary Source="ButtonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Déclarant des ressources:
<Window.Resources>
<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/Styles.xaml"/>
</Window.Resources>
En regardant le concepteur de VS tous les contrôles sont affichés avec les styles des fichiers, mais lorsque j'essaie de lancer l'application, j'obtiens l'erreur suivante:
"Ne peut pas localiser la ressource 'inputstyles.xaml'."
De l'action de construire est réglé sur "Page" pour tous les fichiers et de la construction pour les deux projets réussit. Ce que je fais mal?
source d'informationauteur chaosr
Vous devez vous connecter pour publier un commentaire.
La action de construire doivent être définies comme des Ressources ou de Contenu si vous êtes prêt à faire une partie du travail de jambe.
De mon observation. Réglage de la ressource dictonary style de
Resource
peut causer bizarre erreurs plus loin sur la route (j'ai soudain commencé à recevoir des erreurs d'exécutionCannot create X
où X est un type défini par l'utilisateur référencé dans mon dictionnaire de ressources).Je vous recommandons de laisser le style au
Page
. De ce que j'ai vu cela devrait fonctionner très bien.Plus de détails sur Pack Uri dans WPF & Fusionné Les Dictionnaires De Ressources
Action de construire devrait être Ressources.
Both XMAL and C# solution.
Mise à jour
XAML Façon:
If you know the URI of the resource in an Assembly, then load it directly. Transform same syntax in XAML
C# Chemin:
If you only know the Assambly and don't know the Resources in it