269 votes

ResourceDictionary dans une assemblée séparée

Je dispose de fichiers de dictionnaire de ressources (MenuTemplate.xaml, ButtonTemplate.xaml, etc.) que je souhaite utiliser dans plusieurs applications distinctes. Je pourrais les ajouter aux assemblages des applications, mais il est préférable que je compile ces ressources dans un seul assemblage et que mes applications y fassent référence, n'est-ce pas ?

Une fois l'assemblage de ressources construit, comment puis-je le référencer dans le App.xaml de mes applications ? Actuellement, j'utilise ResourceDictionary.MergedDictionaries pour fusionner les fichiers de dictionnaire individuels. Si je les ai dans un assemblage, comment puis-je les référencer dans le xaml ?

1 votes

C'est peut-être un peu exagéré, mais vous pouvez préparer vos ressources pour l'exportation en utilisant la technique décrite ici : alexfeinberg.wordpress.com/2015/08/16/ . Le principal avantage de cette méthode est d'éviter les problèmes liés au chargement de plusieurs versions de l'assemblage de ressources dans le même domaine d'application.

6voto

Kylo Ren Points 4943

Utilisation de XAML :

Si vous connaissez l'autre assembly structure et veulent que le resources en c# puis utilisez le code ci-dessous :

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

Sortie : Si nous voulons utiliser ResourceDictionary RD1.xaml du projet WpfControlLibrary1 sur StackOverflowApp projet.

Structure des projets :

Structure of Projects

Dictionnaire des ressources : Resource Dictionary

Sortie du code :

Output

PS : Tous ResourceDictionary Les fichiers doivent avoir Build Action comme Resource ou Page '.

Utilisation de C# :

Si quelqu'un veut la solution en pure code c# alors voyez mon ce solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X