2010-11-17 10 views
1

J'essaie de séparer les fonctionnalités d'un add-in partagé et d'un ruban correspondant (intégré via Ribbon Designer ou XML dans VS10). Le contexte de la solution est construit avec plusieurs projets dans lesquels le complément représente lui-même un hôte avec une interface avec un autre assembly chargé à l'exécution. Dans cet assemblage, je veux avoir accès aux méthodes de rappel du ruban implémentées dans le plug-in partagé (connect.cs). L'application MSProject2010 que j'ai essayé d'injecter le ruban est enveloppée dans cet assembly pour accorder l'accès à l'instance de Project.Redirection des rappels pour séparer la fonctionnalité du ruban du complément partagé

Dans l'hôte est une Startup() - Fonction qui analyse tous les assemblages dans un répertoire spécifique et intègre celui avec l'interface droite. Ainsi, la fonction AddIn_Startup (Params) située dans l'assembly est appelée via l'interface et voici le contexte dans lequel je veux accéder à mes rappels de ruban.

Maintenant, comment est-il possible de router les Callbacks depuis l'application MSProject, à travers l'add-in partagé dans l'assembly?

Une autre question: Comment est-il possible d'accéder à un ruban personnalisé via un assemblage externe? (Même environnement)

Meilleures salutations

Répondre

2

J'ai trouvé moi-même solution.

Le problème est le contexte du shared-addin. Il est compliqué de manipuler un environnement de ruban par rapport à la façon dont il est réalisable via VSTO. J'ai transformé l'addin partagé en un MSProject2010-Addin et ensuite je passe le ruban lui-même comme dans l'interface. Cela est possible en créant un ruban avec le concepteur de ruban qui enregistre le ruban dans la classe Globals, qui est fournie par l'addin. (Globals.Ribbons.RibbonName.Ribbon). De l'autre côté, je lance cet objet dans un OfficeRibbon et l'affecte à un OfficeRibbon vide. Ici, je peux manipuler et modifier les propriétés du ruban et créer EventHandlers. Il n'est pas possible d'ajouter des onglets, des boutons ou d'autres contrôles au ruban pendant l'exécution! Au moins, je ne pouvais pas trouver un moyen de le faire.