Outlook 2007 Лента и MVP

Я работаю над Outlook 2007 VSTO Addin. Я добавил ленту с кнопкой. Я пытаюсь вызвать событие при нажатии кнопки. При событии NewInspector коллекции Application.Inspectors я должен иметь возможность подключиться к этому событию ленты в Presenter.

Вопрос в том, как открыть Ленту Инспектора. Я старался Globals.Ribbons.MyRibbon сделать это. Странно, это работает только для первого инспектора. Я тоже пробовал Globals.Ribbons[inspector].MyRibbon,

Похоже, что при создании NewInspector коллекция лент имеет 0 элементов, а загрузка ленты происходит только после выполнения обработчика события NewInspector.

Есть ли какое-либо событие, чтобы узнать, когда лента загружается ИЛИ Есть ли альтернативный способ, где я могу сохранить бизнес-логику в Presenter вместо ее отображения в виде ленты.

1 ответ

Ответ с большим усилием..

Насколько я могу судить, лента не открывается через vsto или com-взаимодействие, она также не имеет состояния, поэтому лента будет загружена один раз, независимо от того, сколько будет показано инспекторов.

Мне понадобилось много времени, чтобы изящно решить эту проблему, и это довольно сложный код. Я также должен упомянуть, что я решил заняться проблемой, используя XML ленты, а не дизайнер, я нашел, что дизайнер слишком ограничен.

Суть в том, что вы должны создать пользовательскую реализацию IRibbonExtensibility, а затем переписать обратные вызовы в XML-ленте, чтобы они вызывали методы из вашего IRibbonExtensibility. Затем вам нужно обработать загруженное событие и новое событие инспектора, чтобы вы могли связать их.

На самом деле есть еще много всего, и вы можете проверить мой код в проекте VSTO contrib. http://vstocontrib.codeplex.com/SourceControl/changeset/view/b35f26fdca15

Если вы создаете MVP-фреймворк для VSTO, напишите мне, потому что мне было бы интересно посмотреть, что вы делаете.

Другие вопросы по тегам