Инициируйте вызов IRibbonExtensibility.GetCustomUI (), чтобы принудительно обновить пользовательский интерфейс ленты. - PullRequest
2 голосов
/ 08 декабря 2011

Я разрабатываю надстройку Office. Из-за некоторых ограничений элементов управления ленты (например, menuSeparator не имеет контроля видимости или splitButton не может содержать dynamicMenu только menu), мне нужно иметь возможность заставить приложение Office перезагрузить ленту, повторяя позвоните в мою надстройку IRibbonExtensibility.GetCustomUI.

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 27 апреля 2012

Насколько я знаю надстройки ленты, для этого потребуется остановить и перезапустить вашу надстройку. Должен быть способ сделать это, учитывая, что можно получить доступ к списку надстроек в outlook. Вы можете запустить другой экземпляр вашей надстройки, который сначала закроет предыдущий, а затем вернет обновленный XML-файл ленты. Но это означает, что это не будет применимо, пока пользователь нажимает на компоненты ленты, и вам придется где-то сохранить все свои данные, а затем прочитать их, чтобы восстановить статус надстройки. Кроме того, пользователь может видеть, как лента исчезает и появляется снова, что может быть не оценено.

0 голосов
/ 25 сентября 2012

Будет ли работать метод Ribbon.Invalidate () для вашего варианта использования?Я часто использую его для обновления ленты, когда я динамически добавляю / удаляю элементы.

Например, в файле ленты c # (по умолчанию Ribbon1.cs):

this.ribbon.Invalidate();

Когдалента должна быть обновлена.Предполагается, что вы установили this.ribbon в методе Ribbon_Load.

...