2011-07-11 10 views
5

संपादित करें: पोस्टर्स का जवाब सही है इसके अलावा इसे शामिल करने के लिए xmlns = "http://schemas.microsoft.com/office/2009/07/customui" पढ़ना चाहिए। एक दुष्प्रभाव के रूप में एक XML फ़ाइल में परिभाषित रिबन और संदर्भ मेनू Office 2007 में काम नहीं करेगा। यदि आपको 2007 में एक संदर्भ मेनू जोड़ने की आवश्यकता है, तो अब बहिष्कृत का उपयोग करें, और Outlook 2007 संदेश विंडो के भीतर एक संदर्भ मेनू संभव नहीं है ।एक ही समय में एक वीएसटीओ रिबन और संदर्भ मेनू कैसे प्राप्त करें?

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

मैं दोनों एक रिबन और एक प्रसंग मेनू बना लिया है, लेकिन मैं कैसे उन दोनों को एक ही समय में तैनात करने के लिए पता नहीं है।

मेरे रिबन एक्सएमएल इस तरह दिखता है:

<?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; 

} 

ContextMenu एक्सएमएल (एक ट्यूटोरियल से)

<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> 
अपने सीएस फ़ाइल के साथ

तरह लग रहा है जो दिखता है:

private Office.IRibbonUI ribbon; 

public Ribbon2() 
{ 
} 

#region IRibbonExtensibility Members 

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

समस्या उपयोग करने के लिए है या तो मेरी ऐड क्लास में मैं करना होगा:

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

    return new Ribbon(); 

} 

या

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

    return new Ribbon2(); //The Context Menu 

} 

लेकिन मैं दोनों नहीं कर सकते। मैं एक ही समय में संदर्भ मेनू और रिबन दोनों कैसे प्राप्त करूं?

संपादित करें: मैं एप्लिकेशन.इटेमकॉन्टेक्स्टमेनू डिस्प्ले का उपयोग करने से भी बचना चाहूंगा, क्योंकि इसे आधिकारिक तौर पर एपीआई द्वारा बहिष्कृत किया गया है।

+0

आप सफल था और रचना खिड़कियों? मैं इसे लिखने में दिखा सकता हूं। – wpfwannabe

+0

इसे पढ़ने में काम करना चाहिए? क्या आप पूर्वावलोकन फलक के लिए एक्सप्लोरर विंडो से मानक मानक मेनू का उपयोग नहीं करेंगे? रीड मोड इंस्पेक्टर संपादन योग्य नहीं है। या शायद आपके पास इस मोड में सक्षम करने के लिए एक और गैर-मेल परिदृश्य है। –

+0

यदि आप रुचि रखते हैं तो कृपया इसके लिए प्रतिबद्ध करें: http: //stackoverflow.com/documentation/outlook-addin/commit –

उत्तर

11

आप दो रिबन एक्सएमएल फाइल गठबंधन करने के लिए की जरूरत है, तो एक भी कॉलबैक फ़ाइल है: दोनों पढ़ने में संदर्भ मेनू दिखाने में

<?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 –

संबंधित मुद्दे