Est-il possible de partager un fichier ResourceDictionary entre plusieurs projets?
-
09-09-2019 - |
Question
Si j'ai un ResourceDictionary dans un projet, est-il possible de créer un autre projet qui utilise des ressources définies dans le premier projet? Notez que les deux projets sont des applications WPF, non ControlLibraries.
Merci !!
La solution
Oui, bien sûr que ce soit possible, aussi longtemps que le projet B a une référence au projet A.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
Ensuite, vous pouvez simplement utiliser les ressources définies dans YourResourceFile.xaml.
Autres conseils
Je trouve que je devais faire référence à l'assemblée elle-même et ne pas utiliser un nom de projet. J'ai aussi ne pas besoin d'utiliser le pack. /// syntaxe pour obtenir ce travail
Cette réponse sur la double question spécifie le format à utiliser (je peux vérifier que cette syntaxe fonctionne dans .NET 4.0): https://stackoverflow.com/a/10216253/1260563
Plus précisément (depuis que j'oublie toujours la partie composante pensant qu'il est une personne de dossier utilise):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>
Donc, si vous avez un ensemble Abc.Def.dll et un fichier dans cette DLL appelée Xyz.xaml au niveau de la racine que vous utilisez:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>
Note: ReSharper 7 indiqué que je devais faire référence à l'assemblée elle-même
.