2017-07-24 3 views
-1

J'utilise exactement cette approche pour rendre mon extensible C# -application pour d'autres développeurs:C# - Importer des images de plugin hôte avec MEF

Creating a simple plugin mechanism

chaînes d'importation comme il est indiqué dans le lien avec " First Plugin "fonctionne très bien, mais je veux aussi que les auteurs de plugins puissent importer une image qui est ensuite utilisée pour une icône de bouton dans l'application principale. Je l'ai déjà essayé en important le chemin de l'image (défini dans le projet plugin) sous forme de chaîne mais cela n'a pas fonctionné car c'est un chemin relatif (par exemple Images/Test.jpg, je ne veux pas utiliser de chemins absolus) l'application principale n'a pas trouvé l'image avec ce chemin.

Comment puis-je importer des images définies dans le plugin vers mon application principale?


Mise à jour: Je pense que cela fonctionne en quelque sorte si j'ajoute l'image aux ressources de mon dll. Mais comment puis-je accéder aux ressources de dll au sein de mon application principale?

Répondre

0

Après plusieurs jours de recherche, j'ai trouvé une solution à mon problème! Cette solution a fonctionné pour moi en fonction de l'exemple ci-dessus affiché:

faire dans le plug-in-projet:

  • Ajouter l'image au plugin-projet (par exemple /Images/Example.png)
  • Dans les propriétés de l'ensemble de l'image 'action Construire' à 'ressources'
  • Créer cette méthode:
public ImageSource getIcon() 
{ 
    return new BitmapImage(new Uri("/FirstPlugin;component/Resources/Example.png", UriKind.Relative)); 
} 

Dans l'application principale, vous pouvez alors obtenir l'image et le définir comme RibbonButton-Icon avec:

myRibbonButton.LargeImageSource = plugin.getIcon();