动态更改检查员自定义功能区控件

Altering inspector custom ribbon controls dynamiccaly

在我的 Outlook 加载项中,我最初将自定义功能区(带有控件的新组)分配给检查员,以支持我手动创建的某些邮件的某些功能。当我打开每个邮件项目时,无论商店或文件夹如何,都会显示此自定义选项卡。我想让此选项卡仅对我手动创建的自定义邮件项目的检查员可见。

以下是 xml 的片段,我在代码中将其添加为检查员的自定义 UI。我添加了一个回调方法来执行以设置可见性 (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”。为什么会这样?每次我打开一个新的检查器时,我应该怎么做才能让这个回调方法执行。我错过了什么?

您需要在 NewInspector 事件触发时强制更新功能区。呼叫IRibbonUI.Invalidate。可以从 OnLoad 功能区回调中检索 IRibbonUI(必须在功能区中指定 XML)。