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 !!

Était-ce utile?

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

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top