Обновлять состояние getvisible вкладки VSTO каждый раз, когда я нажимаю на конкретную вкладку - PullRequest
1 голос
/ 05 июля 2019

Я занимаюсь разработкой проекта VSTO Excel-AddIn 2010.

Я пытаюсь сделать вкладку "isInstalled" видимой или нет, решая, установлена ​​ли на компьютере определенная программа.Поэтому я добавил атрибут getVisible на вкладку и написал функцию обратного вызова для проверки и возврата значений 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 обновляет только те, которые при первом нажатии на вкладку.Он никогда не будет обновляться, пока я не перезапущу программу.Интересно, есть ли способ позволить вкладке обновлять свой статус getVisible каждый раз, когда я нажимаю на нее?

1 Ответ

0 голосов
/ 05 июля 2019

Вы находитесь на правом проспекте. Все значения кэшируются пользовательским интерфейсом Fluent. Если вам нужно заново вызывать обратный вызов, то есть переоценивать кэшированные значения, вам необходимо использовать метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...