每次单击特定选项卡时刷新 VSTO 选项卡的 getvisible 状态

Refresh the VSTO tab's getvisible state everytime I click the specific tab

我正在开发 VSTO Excel-AddIn 2010 项目。

我正在尝试使选项卡 "isInstalled" 可见或不可见,具体取决于计算机上是否安装了特定程序。因此,我在选项卡中添加了 getVisible 属性并编写了一个回调函数来检查 return true 或 false。

public bool IsInstalled(Office.IRibbonControl control)
{
    if(isSoftwareinstalled(control.id)) return true;
    return false;
}
<button id="office" label="Launch"  getVisible="IsInstalled" onAction="Launch"/>

但是我在测试的时候发现getVisible只在我第一次点击tab的时候更新。除非我重新启动程序,否则它将永远不会再次更新。不知道有没有办法让tab在每次点击的时候更新getVisible状态

你走对了路。所有值都由 Fluent UI 缓存。如果您需要重新调用回调,即 re-valuate 缓存值,则需要使用 Invalidate 方法:

XML

<customUI … OnLoad="MyAddinInitialize" …>

-----------------------------------------

VB

Dim MyRibbon As IRibbonUI 

Sub MyAddInInitialize(Ribbon As IRibbonUI) 
  Set MyRibbon = Ribbon 
End Sub 

Sub myFunction() 
  MyRibbon.Invalidate() ' Invalidates the caches of all of this add-in's controls 
End Sub

此外,您可以考虑使用 InvalidateControl 方法,该方法会使功能区用户界面上单个控件的缓存值无效。

XML

<customUI … OnLoad="MyAddInInitialize" …>

-----------------------------------------

VB

Dim MyRibbon As IRibbonUI 

Sub MyAddInInitialize(Ribbon As IRibbonUI) 
 Set MyRibbon = Ribbon 
End Sub 

Sub myFunction() 
 MyRibbon.InvalidateControl("control1") ' Invalidates the cache of a single control 
End Sub