2017-05-29 119 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

相關問題