none
System.addin : comment intégrer l'interface graphique (wpf) d'un plugin dans une zone graphique(wpf) définie du host RRS feed

  • Question

  • Bonjour a tous,
    Je suis étudiant en dernière année d'école d'ingénieur informatique, et je travaille sur une application qui utilise entre autre :
    - le wpf avec Expression Blend, pour l'IHM
    - System.AddIn, pour la gestion des addins.
    Je suis donc sous VS 2008 (version d'évaluation) avec le framework 3.5, et Expression Blend (beta 2).
    Mon problème:
    J'ai mis en place et compris comment fonctionne System.AddIn. J'arrive à récupérer à peu près tout ce que je veux de l'addin, mais je ne sais pas comment récupérer son interface graphique dans un grid du Host.
    Ce que je souhaite faire c'est intégrer l'IHM d'un plugin, dans une zone graphique de l'interface du host.
    J'ai testé sans succes le fait de faire passer un 'Window' ou un 'Grid' par le system.addin, mais ceci est rendu impossible par le fait que ces deux éléments ne sont pas sérialisables.
    Donc j'aurais souhaité savoir comment je peux récupérer les composants de l'IHM de l'addin, pour les intégrer dans l'IHM de l'Host.

    Si quelqu'un pouvait m'aider, je suis bloqué depuis un bon moment. Merci d'avance! Wink
    Dohz.
    mercredi 16 avril 2008 16:25

Réponses

Toutes les réponses

  • Est ce que ce lien:

    http://msdn2.microsoft.com/en-us/library/bb909849.aspx

    qui explique comment faire un addIn qui intègre un UI WPF pourrait t'aider?

     

    J'avoue ne pas encore avoir eut trop le temps de jouer avec VS2008 (un peu de XAML et du WCF à peine) donc je n'ai pas essayé de faire un exemple mais si ceci ne t'aide pas je m'y collerai.

    jeudi 17 avril 2008 11:26
  • Merci pour aide Radric.
    Je ne sais pas si c'est exactement ce qu'il me faut, mais à première vue ça m'a l'air de répondre à mes besoins.
    Je vais tester tout ça et je vous tiens au courant Wink
    J'avais tenté de passer un "Window", puis un "Grid"... mais rien à faire. Donc je vais tester avec le "FrameworkElement" et je vous dirai si ça marche ou pas Wink
    En tout cas si quelqu'un sait directement comment faire, qu'il n'hésite pas, je reste ouvert à toute proposition.

    (Merci encore Radric)


    jeudi 17 avril 2008 16:00
  • Salut! Bon j'ai testé ce qui est dit dans l'article (très bon article d'ailleurs! il existe même en français, en remplaçant en-us par fr-fr).
    Donc j'ai réussi à récupérer l'interface et tous ses composants (y compris le code associé), c'est tout juste ce que je voulais.
    Le truc c'est que je ne sais pas pourquoi, tout ce que je récupère est invisible! Du coup rien n'apparait et pourtant si je clique à l'emplacement théorique d'un bouton par exemple, j'ai bien l'exécution du code associé au bouton qui se lance.
    Donc l'interface de l'addin se charge bien dans celle de l'hôte, mais elle est invisible. Je ne vois pas pourquoi.
    une idée? merci encore.
    ^^
    jeudi 24 avril 2008 12:52
  •  

    Raaaahhhh,

     

    Je viens de finir l'exemple  J'ai un petit peu galérer mais j'ai peut être l'explication. Je t'ai donné un pointeur sur:

    http://msdn2.microsoft.com/fr-fr/library/bb909849.aspx (enfin la version anglaise équivalente) mais j'aurai plutôt du te donner celui là:

    http://msdn2.microsoft.com/fr-fr/library/bb909849.aspx

     

    En effet le premier t'explique comment faire un complément qui retourne une interface utilisateur alors que le deuxième te permet de faire un complément qui est une interface utilisateur. Juste une petite nuance mais qui fait peut être toute la différence.

    Bref j'ai fait le deuxième et après quelques galère (surtout trouver les bons assembly) il a fonctionné et j'ai bien un joli bouton cliquable (et visible).

     

    lundi 28 avril 2008 12:24
  •  Radric A écrit:

     

    Raaaahhhh,

     

    Je viens de finir l'exemple  J'ai un petit peu galérer mais j'ai peut être l'explication. Je t'ai donné un pointeur sur:

    http://msdn2.microsoft.com/fr-fr/library/bb909849.aspx (enfin la version anglaise équivalente) mais j'aurai plutôt du te donner celui là:

    http://msdn2.microsoft.com/fr-fr/library/bb909849.aspx

     

    En effet le premier t'explique comment faire un complément qui retourne une interface utilisateur alors que le deuxième te permet de faire un complément qui est une interface utilisateur. Juste une petite nuance mais qui fait peut être toute la différence.

    Bref j'ai fait le deuxième et après quelques galère (surtout trouver les bons assembly) il a fonctionné et j'ai bien un joli bouton cliquable (et visible).

     

     

    Ce n'est pas tous le même lien? Il me semble que oui...

    lundi 28 avril 2008 14:15
    Modérateur
  • copier/coller de  Bip

     

     

    voici le bon lien : http://msdn2.microsoft.com/fr-fr/library/bb909887.aspx

     

     

    lundi 28 avril 2008 14:55
  • Merci Radic, je test ça lundi première heure! ^^
    Je vous tien au courrant, mais ça à l'air d'être ça à première vu.
    C'est vrai que je n'avais pas pensé qu'il pouvait y avoir une différence entre les 2. Comme tu dis, c'est peu être une nuance importante... Wink

    mercredi 30 avril 2008 23:20
  • Salut à tous!
    J'ai regardé, appliqué, et testé le deuxième lien de Radic. Après avoir tout fait bien comme il faut, j'ai un problème lors de la découverte des addins qui implémente la vue WpfAddinHostView dans l'exemple.
    Vu que le moteur ne trouve pas d'addin qui implémente cette vue, je ne peux même pas tester voir si la suite du code fonctionne comme je l'espère...
    Une idée sur le pourquoi du comment de ce problème? Smile

    PS: je précise que le même addin qui implémente cette vue, implémente aussi d'autres vues qui elles, sont bien détectées lors de AddInStore.FindAddIns(typeof(WPFAddInHostView), appPath).
    mardi 6 mai 2008 13:39
  • Bon j'ai trouvé pourquoi je ne pouvais découvrir l'addin. Un oubli qui me paraissait logique : je n'avais pas redonné un nom d'addin au UserControl nouvellement créé (voir ci apres) car j'avais déjà une classe qui porte le nom d'un addin.
    Code Snippet

    [AddIn("WPF Add-In 1")]

    public partial class AddInUI : WPFAddInView    { [...] }
    Je fais des tests sur la récupération de l'affichage et je vous confirme si ca marche correctement!
    Merci encore Radic! Wink
    jeudi 29 mai 2008 08:51
  • Bonjour a tous,
    j'ai donc fait des tests, et tout fonctionne comme prévu, sauf que l'interface graphique reste invisible (comme lors de mon premier problème).
    Donc je ne comprends pas d'où ça pourrait venir. Est-ce que quelqu'un aurait une idée?
    (zindex, opacité, Alpha, conteneur... tout est correcte.) Donc je ne comprends pas d'où vient ce problème.
    Ce qui m'intrigue le plus c'est que l'interface est bien présente à l'endroit où je l'attends. Elle est active, puisque je peux cliquer sur les boutons qu'elle contient (le code des boutons est une messagebox qui apparait lors du click) et je vois bien la messageBox.
    Si on pouvait m'aider à voir d'où provient ce problème d'affichage... merci d'avance...
    vendredi 30 mai 2008 09:12