2016-07-29 5 views
0

私のOutlookアドインでは、手動で作成する一部のメールの機能をサポートするために、カスタムリボン(コントロール付きの新しいグループ)をインスペクタに割り当てます。このカスタムタブは、ストアやフォルダに関係なくすべてのメールアイテムを開くと表示されます。手動で作成したカスタムメールアイテムのインスペクタに対してのみ、このタブを表示するようにします。インスペクタのカスタムリボンコントロールの変更dynamiccaly

以下は、コードのインスペクターのカスタムUIとして追加した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を呼び出します。 IRibbonUIは、OnLoadリボンコールバックから取得できます(リボンXMLで指定する必要があります)。

関連する問題