0
votes

I created an Outlook 2016 Addin which shows perfectly in the Inspector Windows for Appointments using the Ribbon Designer. According to the documentation, I added the RibbonType Microsoft.Outlook.Explorer.

I would have expected that it would also show up on the start screen of Outlook: enter image description here

Also, I cannot find any suitable RibbonType to set additionally so that the Addin shows on the start screen. Which should I add? enter image description here

Where can I find good additional documentation of how to customize Outlook's Ribbons? Do I have to switch to XML Customization? Is there documentation for how to move from Designer to XML?

I also included the Designer Code:

namespace OutlookAddIn4
{
    partial class MyAddIn : Microsoft.Office.Tools.Ribbon.RibbonBase
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        public MyAddIn()
            : base(Globals.Factory.GetRibbonFactory())
        {
            InitializeComponent();
        }

        /// <summary> 
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">"true", wenn verwaltete Ressourcen gelöscht werden sollen, andernfalls "false".</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Komponenten-Designer generierter Code

        /// <summary>
        /// Erforderliche Methode für Designerunterstützung -
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.tab1 = this.Factory.CreateRibbonTab();
            this.group1 = this.Factory.CreateRibbonGroup();
            this.btnAddMyAddIn = this.Factory.CreateRibbonButton();
            this.btnViewInMyAddIn = this.Factory.CreateRibbonButton();
            this.btnRemoveFromMyAddIn = this.Factory.CreateRibbonButton();
            this.btnSettings = this.Factory.CreateRibbonButton();
            this.tab1.SuspendLayout();
            this.group1.SuspendLayout();
            this.SuspendLayout();
            // 
            // tab1
            // 
            this.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
            this.tab1.ControlId.OfficeId = "TabAppointment";
            this.tab1.Groups.Add(this.group1);
            this.tab1.Label = "TabAppointment";
            this.tab1.Name = "tab1";
            // 
            // group1
            // 
            this.group1.Items.Add(this.btnAddMyAddIn);
            this.group1.Items.Add(this.btnViewInMyAddIn);
            this.group1.Items.Add(this.btnRemoveFromMyAddIn);
            this.group1.Items.Add(this.btnSettings);
            this.group1.Label = "MyAddIn";
            this.group1.Name = "group1";
            this.group1.Position = this.Factory.RibbonPosition.AfterOfficeId("GroupActions");
            // 
            // btnAddMyAddIn
            // 
            this.btnAddMyAddIn.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnAddMyAddIn.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnAddMyAddIn.Label = "Add Minutes";
            this.btnAddMyAddIn.Name = "btnAddMyAddIn";
            this.btnAddMyAddIn.ShowImage = true;
            this.btnAddMyAddIn.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnAddMyAddIn_Click);
            // 
            // btnViewInMyAddIn
            // 
            this.btnViewInMyAddIn.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnViewInMyAddIn.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnViewInMyAddIn.Label = "View Minutes";
            this.btnViewInMyAddIn.Name = "btnViewInMyAddIn";
            this.btnViewInMyAddIn.ShowImage = true;
            this.btnViewInMyAddIn.Visible = false;
            this.btnViewInMyAddIn.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.ViewInMyAddIn_Click);
            // 
            // btnRemoveFromMyAddIn
            // 
            this.btnRemoveFromMyAddIn.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnRemoveFromMyAddIn.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnRemoveFromMyAddIn.Label = "Remove Minutes";
            this.btnRemoveFromMyAddIn.Name = "btnRemoveFromMyAddIn";
            this.btnRemoveFromMyAddIn.ShowImage = true;
            this.btnRemoveFromMyAddIn.Visible = false;
            this.btnRemoveFromMyAddIn.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.RemoveFromMyAddIn_Click);
            // 
            // btnSettings
            // 
            this.btnSettings.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
            this.btnSettings.Image = global::OutlookAddIn4.Properties.Resources.do_48x48;
            this.btnSettings.Label = "Settings";
            this.btnSettings.Name = "btnSettings";
            this.btnSettings.ShowImage = true;
            this.btnSettings.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.Settings_Click);
            // 
            // MyAddIn
            // 
            this.Name = "MyAddIn";
            this.RibbonType = "Microsoft.Outlook.Appointment, Microsoft.Outlook.Explorer";
            this.StartFromScratch = true;
            this.Tabs.Add(this.tab1);
            this.Load += new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.MyAddIn_Load);
            this.tab1.ResumeLayout(false);
            this.tab1.PerformLayout();
            this.group1.ResumeLayout(false);
            this.group1.PerformLayout();
            this.ResumeLayout(false);

        }

        #endregion

        internal Microsoft.Office.Tools.Ribbon.RibbonTab tab1;
        internal Microsoft.Office.Tools.Ribbon.RibbonGroup group1;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnAddMyAddIn;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnViewInMyAddIn;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnRemoveFromMyAddIn;
        internal Microsoft.Office.Tools.Ribbon.RibbonButton btnSettings;
        internal SettingsForm settingsForm;
    }

    partial class ThisRibbonCollection
    {
        internal MyAddIn MyAddIn
        {
            get { return this.GetRibbon<MyAddIn>(); }
        }
    }
}
2

2 Answers

0
votes

I was kind of stupid. The RibbonType is only a rough preselection of the areas where your addin is enabled to be visible. To precisely define the areas where to add your Ribbon you also need to define your tab's OfficeId as follows: this.tab1.ControlId.OfficeId = "TabAppointment"; From the example code above you see this is set to TabAppointment.

to find other valid tabs you may find the following list helpful

From this I conclude: If you want to show your Custom Ribbon in multiple windows (e.g. main window and calendar and appointment) you want to have multiple ribbons attached to various OfficeIds.

0
votes

The Ribbon (Visual Designer) item does not support all possible types of Ribbon customization. To customize the ribbon in advanced ways, you can export the ribbon from the designer to Ribbon XML and edit the XML directly. The How to: Export a ribbon from the Ribbon Designer to Ribbon XML article describes the task in detail, so you may continue with XML and all features provided by the Fluent UI.

The Fluent UI (aka Ribbon UI) is described in-depth in the following series of articles: