Laden...

Mehrere XML Ribbons in einem Outlook Add-In?

Erstellt von jacques vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.135 Views
J
jacques Themenstarter:in
18 Beiträge seit 2013
vor 10 Jahren
Mehrere XML Ribbons in einem Outlook Add-In?

Guten Tag,

ich würde ganz gerne zwei verschiedene Ribbon Groups an zwei Stellen in Outlook 2010 verankern:
Einmal in der Outlook Explorer Ansicht, und einmal in im "Neue E-Mail" Dialogfenster.

Dazu habe ich in meinem VSTO 2010 Office Projekt zwei neue XML Menübänder erstellt und nach meinen Wünschen zurecht geschustert.

Nun habe ich aber das Problem, dass ich in der Klasse "ThisAddIn" nur ein XML Menüband (z.B. MyRibbonXML) zurückgeben kann:


protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
        {
            //return new MyRibbonXML();
            return new RibbonGenerator();
        }

In meinem Fall müsste ich bei Bedarf aber entweder das eine Menüband zurückgeben oder das andere.
Deshalb habe ich eine Hilfsklasse erstellt:


[ComVisible(true)]
    public class RibbonGenerator : Office.IRibbonExtensibility
    {
        private Office.IRibbonUI ribbon;

        public RibbonGenerator()
        {

        }

        #region IRibbonExtensibility-Member

        public string GetCustomUI(string ribbonID)
        {
            if (ribbonID == "Microsoft.Outlook.Mail.Compose")
            {
                return GetResourceText("SignedTest.MyRibbonXML.xml");
            }
            else if (ribbonID == "Microsoft.Outlook.Explorer")
            {
                return GetResourceText("SignedTest.SignRibbon.xml");
            }
            return null;
        }
    }

Zumindest werden mir damit die jeweiligen Ribbons an der richtigen Stelle angezeigt. Callback Funktionen werden nun aber nicht mehr in der jeweiligen CS CodeBehind Datei gesucht (z.B. MyRibbonXML.cs), sondern in der RibbonGenerator Klasse.

Nun also zur Hauptfrage: Ist dieses Vorgehen die einzige Option die mir bleibt? Ich würde gerne ein Label in MyRibbonXML dynamisch via "getLabel" mit Text versehen. Ist es irgendwie möglich die Callback Funktionen ebenfalls in den jeweiligen .cs Dateien zu hinterlegen, sodass diese auch dort gesucht / gefunden werden?

Wäre für Tipps sehr dankbar.

Viele Grüße

1.029 Beiträge seit 2010
vor 10 Jahren

Hi,

soweit mir bekannt ist hast du mehrere Möglichkeiten:

A) Du führst die Ribbons zusammen und arbeitest je nach aktivem Fenster mit der Sichtbarkeit der Ribbons

B) Du lässt es so wie es ist, implementierst Callback-Funktionen allerdings in deinem Generator bzw.
wenn du's wirklich nett machen möchtest kann man bestimmt auch mit ExpandoObject was basteln,
was die Callbacks an den jeweiligen Ribbon weiterleitet

C) Es gibt auch kontextsensitive Tabs - das wäre dann zwar wieder nur ein Ribbon - aber ich vermute, dass du dich dann nicht selbst um die Sichtbarkeit kümmern musst. (Allerdings noch nie verwendet)

Habe B) beispielsweise mal so verwendet, dass man (mehr oder minder) dynamisch den Ribbon erzeugen konnte - falls es irgendwo hapert kannst du ja nochmal schreiben 😉

LG

J
jacques Themenstarter:in
18 Beiträge seit 2013
vor 10 Jahren

Hallo Taipi88,

vielen Dank für Deine Hilfe!
Ich probiere das mal aus und gebe dann nochmal Feedback sobald ich das habe.
Nochmals danke!