2016-07-29 16 views
0

In meinem Outlook-Add-In, ich zuweisen eine benutzerdefinierte Multifunktionsleiste (eine neue Gruppe mit Steuerelementen) zu den Inspektoren zunächst einige Funktionen für einige E-Mails zu unterstützen, die ich manuell erstellen. Diese benutzerdefinierte Registerkarte wird angezeigt, wenn ich jede Mail unabhängig vom Speicher oder Ordner öffne. Ich möchte diese Registerkarte nur für die Prüfer der von mir manuell erstellten benutzerdefinierten E-Mail-Nachrichten sichtbar machen.Ändern des Inspektors benutzerdefinierte Multifunktionsleistensteuerelemente dynamiccaly

Im Folgenden finden Sie ein Fragment des XML, das ich als benutzerdefinierte Benutzeroberfläche für Inspektoren im Code hinzufüge. Ich habe eine Callback-Methode hinzugefügt, die ausgeführt wird, um die Sichtbarkeit festzulegen (GetCustomGroupVisible).

<ribbon> 
    <tabs> 
     <tab idMso="TabReadMessage"> 
     <group id="MyCustomGroup" insertBeforeMso="GroupMailDelete" getVisible="GetCustomGroupVisible"> 
      <button id="Button1" size="large" onAction="ButtonClick" /> 
      <button id="Button2" size="large" onAction="ButtonClick" /> 
     </group> 
     </tab> 
    </tabs> 
    </ribbon> 


// Callback method 
public bool GetCustomGroupVisible(IRibbonControl control) 
{ 
    bool makeVisible = false;   
    if (// this is one of my custom mails !) 
     { 
     makeVisible = true; 
     } 
     return makeVisible; 
    } 

Mein Problem ist, das oben gezeigte Callback-Methode „GetCustomGroupVisible“ nicht manchmal genannt wird, wenn ich einen neuen Inspektoren öffnen. Warum passiert das so? Was muss ich tun, damit diese Rückrufmethode jedes Mal ausgeführt wird, wenn ich einen neuen Inspector öffne? Was vermisse ich ?

Antwort

1

Sie müssen die Aktualisierung der Multifunktionsleiste erzwingen, wenn das NewInspector-Ereignis ausgelöst wird. Rufen Sie IRibbonUI.Invalidate auf. IRibbonUI kann aus dem OnLoad-Menübandrückruf abgerufen werden (muss in der Menüband-XML angegeben werden).