2008-11-17 6 views
2

J'utilise VSTO 3.0 et le concepteur de ruban me donne un ruban qui est apparemment partagé entre les documents.Instances de ruban par document

Donc, si je état spécifique de document (nombre de XML balisé balises disent) qui doit apparaître dans le ruban (ou un bouton à bascule) tous les documents semblent alors partager l'instance de ruban

Comment puis-je correction TIA

Répondre

3

Accrocher un événement approprié (par exemple, lorsque le document actif est modifié) dans le modèle de document et, dans ce cas, invalider le bouton du ruban approprié (vous aurez besoin de l'identifiant de l'élément de l'original Ruban xml vous chargez). Puis, lorsque le rappel de l'état d'actualisation pour ce bouton se produit, vous pouvez mettre à jour la légende/image/activé comme requis.

+0

Je sais qu'il est mort depuis 6 ans, mais je suis en train de vivre ce traumatisme. Où voulez-vous dire quand vous faites référence à «dans le modèle de document»? – user3429738

+0

Si la mémoire est utilisée (il y a longtemps), des événements sur l'objet Application avec lesquels vous pouvez vous enregistrer peuvent être notifiés lorsque le document actif est modifié. Cela vous donne l'opportunité d'invalider les boutons du ruban et déclenche ainsi une mise à jour pour refléter l'état approprié pour le nouveau document actif. – Bevan

4

Vous pouvez utiliser l'événement Application.DocumentChange ou l'événement Application.WindowActivate. Le premier est déclenché, puis vous changez le document actif en cours, mais dans les arguments il n'y a aucune information sur ce document, donc c'est difficile de travailler avec parce que vous aurez à comprendre cela. Ce dernier est similaire et il est déclenché chaque fois que vous changez de fenêtre mais dans ce cas, il passe le document actif en cours en tant qu'argument, il est donc plus facile de changer le ruban si vous devez vérifier la valeur de toute propriété du document. Cela a fonctionné pour moi.

Questions connexes