2016-07-29 53 views
0

在我的Outlook加載項中,我最初爲檢查器分配了一個自定義功能區(帶控件的新組),以支持手動創建的某些郵件的某些功能。當我打開每個郵件項目而不管商店或文件夾時,此自定義選項卡正在顯示。我想讓此選項卡僅對我手動創建的自定義郵件項目的檢查員可見。更改檢查器自定義功能區控件dynamiccaly

以下是我添加爲代碼中檢查器的自定義用戶界面的xml片段。我添加了一個回調方法來執行以設置可見性(GetCustomGroupVisible)。

<ribbon> 
    <tabs> 
     <tab idMso="TabReadMessage"> 
     <group id="MyCustomGroup" insertBeforeMso="GroupMailDelete" getVisible="GetCustomGroupVisible"> 
      <button id="Button1" size="large" onAction="ButtonClick" /> 
      <button id="Button2" size="large" onAction="ButtonClick" /> 
     </group> 
     </tab> 
    </tabs> 
    </ribbon> 


// Callback method 
public bool GetCustomGroupVisible(IRibbonControl control) 
{ 
    bool makeVisible = false;   
    if (// this is one of my custom mails !) 
     { 
     makeVisible = true; 
     } 
     return makeVisible; 
    } 

我的問題是,上面所示的回調方法「GetCustomGroupVisible」當我打開一個新的檢查沒有被有時也被稱爲。爲什麼會發生這種情況?我應該怎樣做才能在每次打開新的檢查員時執行此回調方法。我錯過了什麼?

回答

1

當NewInspector事件觸發時,您需要強制更新功能區。調用IRibbonUI.Invalidate。可以從OnLoad功能區回調中檢索IRibbonUI(必須在功能區XML中指定)。