VSTO 功能区上下文菜单动态层次结构
VSTO Ribbon Context Menu Dynamic Hierarchy
如何使用 VSTO Ribbons(适用于 Outlook 2016)创建动态菜单层次结构?
xml 占位符可能看起来像这样,但我需要 add/remove 菜单根目录下的菜单树(而不是 dummySingle)。似乎需要对菜单项进行 "getDependents" 回调。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<contextMenus>
<contextMenu idMso="ContextMenuMailItem">
<menu id="Menu Root" label="Menu Root" >
<button id="dummySingle"
label="dummy"
onAction="DummyAction"/>
</menu >
</contextMenus>
</customUI>
您需要查看 Office 功能区的动态菜单。这将是您开始的重要来源:Adding Custom Dynamic Menus to the Office Fluent User Interface。你的色带 XML 看起来像 ...
<dynamicMenu id="dynamicMenu1"
label="Dynamic Menu"
getContent="GetContent" />
并且在 GetContent
处理程序上,您将构建动态菜单上下文,可能看起来像 ...
public string GetContent(IRibbonControl control)
{
StringBuilder MyStringBuilder = new StringBuilder(@"<menu xmlns=""http://schemas.microsoft.com/office/2006/01/customui"" >");
MyStringBuilder.Append(@"<button id=""button1"" label=""Insert Text"" onAction=""OnAction"" imageMso=""SignatureLineInsert"" />");
MyStringBuilder.Append(@"<menuSeparator id=""menusep1"" getTitle=""GetTitle"" />");
MyStringBuilder.Append(@"<button id=""button2"" label=""Insert More Text"" onAction=""OnAction"" imageMso=""FileDocumentInspect"" />");
MyStringBuilder.Append(@"</menu>");
return MyStringBuilder.ToString();
}
有关动态菜单的更多信息:documentation for dynamicMenu
如何使用 VSTO Ribbons(适用于 Outlook 2016)创建动态菜单层次结构?
xml 占位符可能看起来像这样,但我需要 add/remove 菜单根目录下的菜单树(而不是 dummySingle)。似乎需要对菜单项进行 "getDependents" 回调。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<contextMenus>
<contextMenu idMso="ContextMenuMailItem">
<menu id="Menu Root" label="Menu Root" >
<button id="dummySingle"
label="dummy"
onAction="DummyAction"/>
</menu >
</contextMenus>
</customUI>
您需要查看 Office 功能区的动态菜单。这将是您开始的重要来源:Adding Custom Dynamic Menus to the Office Fluent User Interface。你的色带 XML 看起来像 ...
<dynamicMenu id="dynamicMenu1"
label="Dynamic Menu"
getContent="GetContent" />
并且在 GetContent
处理程序上,您将构建动态菜单上下文,可能看起来像 ...
public string GetContent(IRibbonControl control)
{
StringBuilder MyStringBuilder = new StringBuilder(@"<menu xmlns=""http://schemas.microsoft.com/office/2006/01/customui"" >");
MyStringBuilder.Append(@"<button id=""button1"" label=""Insert Text"" onAction=""OnAction"" imageMso=""SignatureLineInsert"" />");
MyStringBuilder.Append(@"<menuSeparator id=""menusep1"" getTitle=""GetTitle"" />");
MyStringBuilder.Append(@"<button id=""button2"" label=""Insert More Text"" onAction=""OnAction"" imageMso=""FileDocumentInspect"" />");
MyStringBuilder.Append(@"</menu>");
return MyStringBuilder.ToString();
}
有关动态菜单的更多信息:documentation for dynamicMenu