2011-07-11 41 views
5

編輯:海報的答案是正確的,除了它應該讀取包含xmlns =「http://schemas.microsoft.com/office/2009/07/customui」。作爲副作用,在Office 2007中定義的功能區和上下文菜單將無法在Office 2007中使用。如果您需要在2007年添加上下文菜單,請使用現在不推薦的,並且Outlook 2007消息窗口中的上下文菜單不可用。如何同時擁有VSTO功能區和上下文菜單?

this.Application.ItemContextMenuDisplay += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemContextMenuDisplayEventHandler(Application_ItemContextMenuDisplay); 

我創建既是功能區和上下文菜單,但我不知道如何在同一時間他們都部署。

我區XML看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 

<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 

<ribbon> 

<tabs> 

    <tab id="testTab" label="Test Label"> 

    <group id="testGroup" label="test"> 

     <button id="testButton" onAction="testAction" label="Test" size="large" 

      getImage ="GetCustomImage" screentip="Test Ribbon Functionality."/>   

    </group>  

    </tab> 

</tabs> 

</ribbon> 

</customUI> 

Ribbon.cs有

public string GetCustomUI(string ribbonID) 

{ 

    String ui = null; 

    // Examine the ribbonID to see if the current item 

    // is a Mail inspector. 

    if (ribbonID == "Microsoft.Outlook.Mail.Read" || 

    ribbonID == "Microsoft.Outlook.Mail.Compose") 

    { 

    // Retrieve the customized Ribbon XML. 

    ui = GetResourceText("WDCrypt2.Ribbon.xml") ; 



    } 

    return ui; 

} 

文本菜單XML樣子(從教程)

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 

<contextMenus> 

    <contextMenu idMso="ContextMenuText"> 

    <button idMso="FontDialog" visible="false" /> 

    <toggleButton id="MyToggle" label="My Toggle Button" /> 

    <button id="MyButton" label="My Button" insertBeforeMso="HyperlinkInsert" onAction="GetButtonID" /> 

    <menuSeparator id="MySeparator" /> 

    <menu id="MySubMenu" label="My Submenu" > 

    <button id="MyButton2" label="Button on submenu" /> 

    </menu> 

    <gallery id="galleryOne" label="My Gallery"> 

    <item id="item1" imageMso="HappyFace" /> 

    <item id="item2" imageMso="HappyFace" /> 

    <item id="item3" imageMso="HappyFace" /> 

    <item id="item4" imageMso="HappyFace" /> 

    </gallery> 

    <dynamicMenu id="MyDynamicMenu" label= "My Dynamic Menu" getContent="GetMyContent" /> 

    </contextMenu> 

</contextMenus> 

</customUI> 

憑藉其CS文件看起來像:

private Office.IRibbonUI ribbon; 

public Ribbon2() 
{ 
} 

#region IRibbonExtensibility Members 

public string GetCustomUI(string ribbonID) 
{ 
    return GetResourceText("WDCrypt2.Ribbon2.xml"); 
} 

的問題是爲使用在我的外接I類必須:

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
{ 

    return new Ribbon(); 

} 

OR

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
{ 

    return new Ribbon2(); //The Context Menu 

} 

但我不能兩者都做。如何同時獲取上下文菜單和功能區?

編輯:我還想避免使用Application.ItemContextMenuDisplay,因爲這已被API正式棄用。

+0

你成功地顯示在閱讀上下文菜單,並撰寫窗口?我似乎只能在作曲中表現出來。 – wpfwannabe

+0

它應該在閱讀?難道你不只是在預覽窗格的資源管理器窗口中使用標準的上下文菜單嗎?讀取模式檢查器不可編輯。或者也許你有另一種非郵件方案來啓用這種模式。 –

+0

如果您有興趣請提交此:http://stackoverflow.com/documentation/outlook-addin/commit –

回答

11

您需要兩個區XML文件合併,然後有一個回調文件:

<?xml version="1.0" encoding="UTF-8"?> 
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load"> 
<ribbon> 
<tabs> 
    <tab id="testTab" label="Test Label"> 
    <group id="testGroup" label="test"> 
     <button id="testButton" onAction="testAction" label="Test" size="large" 
      getImage ="GetCustomImage" screentip="Test Ribbon Functionality."/>   
    </group>  
    </tab> 
</tabs> 
</ribbon> 
<contextMenus> 
    <contextMenu idMso="ContextMenuText"> 
    <button idMso="FontDialog" visible="false" /> 
    <toggleButton id="MyToggle" label="My Toggle Button" /> 
    <button id="MyButton" label="My Button" insertBeforeMso="HyperlinkInsert" onAction="GetButtonID" /> 
    <menuSeparator id="MySeparator" /> 
    <menu id="MySubMenu" label="My Submenu" > 
    <button id="MyButton2" label="Button on submenu" /> 
    </menu> 
    <gallery id="galleryOne" label="My Gallery"> 
    <item id="item1" imageMso="HappyFace" /> 
    <item id="item2" imageMso="HappyFace" /> 
    <item id="item3" imageMso="HappyFace" /> 
    <item id="item4" imageMso="HappyFace" /> 
    </gallery> 
    <dynamicMenu id="MyDynamicMenu" label= "My Dynamic Menu" getContent="GetMyContent" /> 
    </contextMenu> 
</contextMenus> 
</customUI> 
+1

這是正確的,但問題的真正核心在於您無法定義上下文菜單和功能區加載那個標題,因爲功能區上下文菜單對於那個來說太新了,我會相應地編輯你的文章。編輯:其實我不能如此,如果你可以改變你的xmlns「http://schemas.microsoft.com/office/2009/07/customui」,你的答案是正確的。 –

+0

如果您有興趣請提交此:http://stackoverflow.com/documentation/outlook-addin/commit –

相關問題