EDIT: The posters answer is correct except for it should read xmlns="http://schemas.microsoft.com/office/2009/07/customui" for the include. As a side effect the ribbon and context menu defined in an XML file will not work in Office 2007. If you need to add a context menu in 2007, use the now deprecated, and a context menu within the Outlook 2007 message window is NOT POSSIBLE.
this.Application.ItemContextMenuDisplay += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemContextMenuDisplayEventHandler(Application_ItemContextMenuDisplay);
I've created both a Ribbon and a Context menu, but I do not know how to deploy both of them at the same time.
My Ribbon XML looks something like this:
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
  <tab id="testTab" label="Test Label">
    <group id="testGroup" label="test">
      <button id="testButton" onAction="testAction" label="Test" size="large" 
          getImage ="GetCustomImage" screentip="Test Ribbon Functionality."/>         
    </group>      
  </tab>
 </tabs>
</ribbon>
</customUI>
Ribbon.cs has
public string GetCustomUI(string ribbonID)
{
  String ui = null;
  // Examine the ribbonID to see if the current item
  // is a Mail inspector.
  if (ribbonID == "Microsoft.Outlook.Mail.Read" ||
    ribbonID == "Microsoft.Outlook.Mail.Compose")
  {
    // Retrieve the customized Ribbon XML.
    ui = GetResourceText("WDCrypt2.Ribbon.xml") ;
  }
  return ui;
}
ContextMenu XML looks like (from a tutorial)
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
 <contextMenus>
  <contextMenu idMso="ContextMenuText">
   <button idMso="FontDialog" visible="false" />
   <toggleButton id="MyToggle" label="My Toggle Button" />
   <button id="MyButton" label="My Button" insertBeforeMso="HyperlinkInsert" onAction="GetButtonID" />
   <menuSeparator id="MySeparator" />
   <menu id="MySubMenu" label="My Submenu" >
    <button id="MyButton2" label="Button on submenu" />
   </menu>
   <gallery id="galleryOne" label="My Gallery">
    <item id="item1" imageMso="HappyFace" />
    <item id="item2" imageMso="HappyFace" />
    <item id="item3" imageMso="HappyFace" />
    <item id="item4" imageMso="HappyFace" />
   </gallery>
   <dynamicMenu id="MyDynamicMenu" label= "My Dynamic Menu" getContent="GetMyContent" />
  </contextMenu>
 </contextMenus>
</customUI>
With its cs file which looks like:
private Office.IRibbonUI ribbon;
public Ribbon2()
{
}
#region IRibbonExtensibility Members
public string GetCustomUI(string ribbonID)
{
  return GetResourceText("WDCrypt2.Ribbon2.xml");
}
The problem is to use either in my Addin Class I must:
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
  return new Ribbon();
}
OR
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
  return new Ribbon2(); //The Context Menu
}
But I cannot do both. How do I get both the context menu and the ribbon at the same time?
Edit: I would also like to refrain from using Application.ItemContextMenuDisplay, as this is officially deprecated by the API.
You need to combine the two ribbon XML files, then have a single callback file:
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
  <tab id="testTab" label="Test Label">
    <group id="testGroup" label="test">
      <button id="testButton" onAction="testAction" label="Test" size="large" 
          getImage ="GetCustomImage" screentip="Test Ribbon Functionality."/>         
    </group>      
  </tab>
 </tabs>
</ribbon>
<contextMenus>
  <contextMenu idMso="ContextMenuText">
   <button idMso="FontDialog" visible="false" />
   <toggleButton id="MyToggle" label="My Toggle Button" />
   <button id="MyButton" label="My Button" insertBeforeMso="HyperlinkInsert" onAction="GetButtonID" />
   <menuSeparator id="MySeparator" />
   <menu id="MySubMenu" label="My Submenu" >
    <button id="MyButton2" label="Button on submenu" />
   </menu>
   <gallery id="galleryOne" label="My Gallery">
    <item id="item1" imageMso="HappyFace" />
    <item id="item2" imageMso="HappyFace" />
    <item id="item3" imageMso="HappyFace" />
    <item id="item4" imageMso="HappyFace" />
   </gallery>
   <dynamicMenu id="MyDynamicMenu" label= "My Dynamic Menu" getContent="GetMyContent" />
  </contextMenu>
 </contextMenus>
</customUI>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With