我已经建立了一个Word加载项,现在想添加一个选项,当用户突出显示一个单词并右键单击它时,可以从中调用函数。我已经找到了有关如何修改manifest.xml文件的文档here,但似乎没有显示如何添加到上下文菜单的完整示例,仅显示了如何添加按钮和下拉菜单的完整示例。 / p>
文档还使我指向github页的显示示例,但又缺少上下文菜单之一。它还指向this视频,该视频似乎在1:20左右显示了我想要的内容,但没有显示如何实现它。
到目前为止,我有这个(添加到<FunctionFile>
之下):
<ExtensionPoint xsi:type="ContextMenu">
<OfficeMenu id="ContextMenuText">
<Control xsi:type="Menu" id="TestMenu">
<Label resid="ContextMenuLabel" />
<Supertip>
<Title resid="ContextualMenuTitle" />
<Description resid="ContextualMenuTitleDesc" />
</Supertip>
</Control>
</OfficeMenu>
</ExtensionPoint>
当我尝试使用this tool验证清单文件时,它告诉我缺少Icon
元素,但是上下文菜单不需要图像吗?
我想做的是可能的,如果可以的话,有人可以给我指出一个例子吗?
我已经更新了代码,以反映@Mavi Domates编写的内容
<ExtensionPoint xsi:type="ContextMenu">
<OfficeMenu id="ContextMenuText">
<Control xsi:type="Button" id="openSearchButton">
<Label resid="openSearchButtonLabel" />
<Supertip>
<Title resid="openSearchButtonTitle" />
<Description resid="openSearchButtonDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Contoso.tpicon_16x16" />
<bt:Image size="32" resid="Contoso.tpicon_32x32" />
<bt:Image size="80" resid="Contoso.tpicon_80x80" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>getData</FunctionName>
</Action>
</Control>
</OfficeMenu>
</ExtensionPoint>
当我添加此代码时(默认<ExtensionPoint xsi:type="PrimaryCommandSurface">
的正下方,我的加载项不再显示在“我的加载项”菜单中。我下载了Microsoft的manifest validator,它告诉了我我的清单很好。
我将其范围缩小到了引起问题的Control
节点。如果我只添加:
<ExtensionPoint xsi:type="ContextMenu">
<OfficeMenu id="ContextMenuText">
</OfficeMenu>
</ExtensionPoint>
我的加载项仍显示在菜单中。我还在<bt:ShortStrings>
下的资源中添加了相关的字符串:
<bt:String id="openSearchButtonLabel" DefaultValue="Check it out!" />
<bt:String id="openSearchButtonTitle" DefaultValue="Hover over me" />
<bt:String id="openSearchButtonDescription" DefaultValue="For more info go here" />
我的代码似乎与文档完全相同。我不确定从这里去哪里。如果这能改变一切,我就在Mac上。
答案 0 :(得分:1)
您正在尝试做的事情是可能的,并且您非常接近它:)
您已选择ContextMenu控件为Menu
类型,而不是Button
。这意味着您需要一些子菜单控件。
每组至少需要一个对照。控制元素可以是 按钮或菜单。使用菜单指定下拉列表 按钮控件。当前,仅支持按钮和菜单。看到 按钮按钮和菜单控件部分以获取更多信息。
这意味着,如果您想要嵌套菜单,则清单是正确的,只需向其中添加项目和图标。在下面,您可以看到示例代码,这些代码根据您单击的子菜单来打开任务窗格/或执行功能。
<ExtensionPoint xsi:type="ContextMenu">
<OfficeMenu id="ContextMenuText">
<Control xsi:type="Menu" id="TestMenu">
<Label resid="ContextMenuLabel" />
<Supertip>
<Title resid="ContextualMenuTitle" />
<Description resid="ContextualMenuTitleDesc" />
</Supertip>
<Icon>
<bt:Image size="16" resid="your_icon_16"/>
<bt:Image size="32" resid="your_icon_32"/>
<bt:Image size="64" resid="your_icon_64"/>
<bt:Image size="80" resid="_icon_80"/>
</Icon>
<!-- Add your context sub-menu items -->
<Items>
<Item id="contextitem1">
<Label resid="somecontextlabel1"/>
<Supertip>
<Title resid="somecontexttitle1"/>
<Description resid="somedescription1"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="someimage16"/>
<bt:Image size="32" resid="someimage32"/>
<bt:Image size="64" resid="someimage64"/>
<bt:Image size="80" resid="someimage80"/>
</Icon>
<Action xsi:type="ShowTaskpane">
<TaskpaneId>Mysupertaskpane1</TaskpaneId>
<SourceLocation resid="TaskPaneSourceLocation1"/>
</Action>
</Item>
<Item id="contextitem2">
<Label resid="somecontextlabel2"/>
<Supertip>
<Title resid="somecontexttitle2"/>
<Description resid="somedescription2"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="someimage16"/>
<bt:Image size="32" resid="someimage32"/>
<bt:Image size="64" resid="someimage64"/>
<bt:Image size="80" resid="someimage80"/>
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>dosomejsmagic</FunctionName>
</Action>
</Item>
</Items>
</Control>
</OfficeMenu>
</ExtensionPoint>
如果不是这种情况,而您只是在寻找Button
(因此没有子菜单),那么您可以以此为例,现在将控件类型设置为Button
<ExtensionPoint xsi:type="ContextMenu">
<OfficeMenu id="ContextMenuText">
<Control xsi:type="Button" id="Button1Id1">
<Label resid="residLabel" />
<Tooltip resid="residToolTip" />
<Supertip>
<Title resid="residLabel" />
<Description resid="residToolTip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon1_32x32" />
<bt:Image size="32" resid="icon1_32x32" />
<bt:Image size="80" resid="icon1_32x32" />
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>getData</FunctionName>
</Action>
</Control>
</OfficeMenu>
</ExtensionPoint>
答案 1 :(得分:0)
我遇到了同样的问题。现在解决。您的代码是完美的。只是您需要在侧载之前启动服务器。如果您是使用office-generator创建的。然后 1.通过运行“ npm start”启动加载项 2.现在在单独的终端中以“ npm run sideload”运行它的侧载。 这解决了我的问题,希望也能解决您的问题。