2017-05-29 79 views
0

如何使用VSTO功能区(适用于Outlook 2016)创建动态菜单层次结构?VSTO功能区上下文菜单动态层次

xml占位符可能看起来像这样,但我需要添加/删除菜单根下的菜单树(而不是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> 

回答

1

您需要查看动态菜单的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

相关问题