如何在自定义办公室功能区中拥有多个上下文菜单

How to have more than one context menu in a custom office Ribbon

我正在尝试向 Powerpoint 的 Office 插件添加两个上下文菜单。当用户右键单击幻灯片时出现第一个,当用户右键单击所选形状时出现第二个。他们分开工作,这里是功能区 xml:

<contextMenus>
<contextMenu idMso="ContextMenuShape">
    <button id=".../>
</contextMenu>
</contextMenus>

和:

<contextMenus>
<contextMenu idMso="ContextMenuFrame">
    <button id=.../>
</contextMenu>
<contextMenus>

但是当我尝试同时拥有这两种元素时,要么将两个 contextMenu 元素嵌套在 contextMenus 元素中,要么让两个单独的 contextMenus 元素都不显示。有什么方法可以做到这一点,还是我必须只有一个上下文菜单?

<contextMenus> 元素是 <contextMenu> 项的容器。在您的 ribbon.xml 中,您需要将所有上下文菜单项放入 "contectMenus" 容器中。例如:

<contextMenus>
  <contextMenu idMso="ContextMenuShape">
    <button id="id_shape" label="Label 1"/>
  </contextMenu>
  <contextMenu idMso="ContextMenuFrame">
    <button id="id_ffame" label="Label 2"/>
  </contextMenu>
</contextMenus>

要自定义上下文项的可见性,您需要使用每个上下文菜单中元素的 "GetVisible" 和 "GetEnabled" 处理程序;在示例中,这些是按钮。