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, напишите мне, потому что мне было бы интересно посмотреть, что вы делаете.