Программный доступ к элементам управления ленты на ленте XML - PullRequest
3 голосов
/ 02 сентября 2011

Для программирования надстроек Office с использованием C # 4.0 корпорация Майкрософт предоставляет два различных способа создания и / или изменения интерфейса ленты: вы можете использовать Дизайнер ленты или определить макет ленты в Лента XML .

Если вы создаете ленту с помощью дизайнера ленты, класс, сгенерированный в коде, будет иметь видимость для всех элементов управления, которые вы поместили на ленту. Поэтому, если бы я поместил RibbonDropDown под названием «dropdown1», я мог бы использовать следующий код для добавления элемента к нему:

RibbonDropDownItem item = Factory.CreateRibbonDropDownItem();
item.Label = submatrix.Name;
item.Tag = submatrix;
this.dropDown1.Items.Add(item);

Однако, если вы создаете ту же ленту с помощью ленты XML, dropDown1 или Factory не найдены («Имя не существует в текущем контексте»).

Есть ли способ получить доступ к элементам, добавленным в ленту, определенную XML-лентой, в коде?

1 Ответ

5 голосов
/ 01 апреля 2012

Может быть немного поздно, но, надеюсь, это кому-нибудь поможет.

Я был совершенно сбит с толку этой же проблемой.Оказывается, вы можете получить доступ к этим элементам управления только как строковые идентификаторы, и модель перегружена событиями аннулирования.Так, например, когда вы получаете нажатие кнопки с помощью метода onAction, у вас есть только идентификатор отправителя из объекта элемента управления, однако в этом обработчике событий вы можете аннулировать другие элементы управления и вызывать их события, используя

ribbon.InvalidateControl("MyCtl");

проверьте это MS Lab , в нем есть все, что вам нужно, чтобы запустить и запустить

...