CreateRibbonExtensibilityObject 仅创建一个功能区对象 - Outlook 2010 Addin

HK1*_*HK1 2 .net vsto outlook-addin outlook-2010

我正在使用 Visual Studio 2008 (.Net 3.5) 创建一个要在 Outlook 2010 中使用的插件。我定义了两条单独的丝带。其中一个用于创建附件的上下文菜单,另一个用于向 TabReadMessage 添加按钮。

我对如何加载它们感到困惑。我在 ThisAddIn.vb 中有一个函数,它不可能执行我想要的操作 - 加载两个功能区:

Protected Overrides Function CreateRibbonExtensibilityObject() As _
        Microsoft.Office.Core.IRibbonExtensibility

    Return New RibbonAttachAttachmentToPO()
    Return New RibbonOutlook14ReadMail()
End Function
Run Code Online (Sandbox Code Playgroud)

这个问题的最佳解决方案是什么?

ahl*_*lun 5

您将有 2 个 XML 文件,一个用于 TabReadMessage,另一个用于 Attachment 上下文菜单。然后您只需要一个 Ribbon 类,CreateRibbonExtensibilityObject() 加载 Ribbon 类。

在 Ribbon 类的 GetCustomUI() 函数中,您将根据您所在的 Outlook 部分(无论是在资源管理器还是检查器中)加载相应的 XML 文件。

你可以这样做(VB.Net):

Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Microsoft.Office.Core.IRibbonExtensibility.GetCustomUI
   Select Case ribbonID
      Case "Microsoft.Outlook.Mail.Read"  'For TabReadMessage
         Return GetResourceText("The.Read.Message.XML")
      Case "Microsoft.Outlook.Mail.Compose" 'For compose new email message
         Return GetResourceText(".....")
      Case ...
   End Select
End Function
Run Code Online (Sandbox Code Playgroud)