Как настроить ленту Word 2010 только по запросу в надстройке VSTO4?

В настоящее время я занимаюсь разработкой надстройки VSTO и настройкой ленты для Word 2010. Это работает нормально, но имеет недостаток: настройка ленты должна выполняться только для определенных документов, но метод IRibbonExtensibility.GetCustomUI () явно вызывается в приложении. запуск перед загрузкой любого документа. Как я могу выполнить это требование?


person John Doe    schedule 10.05.2011    source источник


Ответы (2)


Вы правы, он вызывается только один раз. О вашем единственном выборе (и что сработало для меня достаточно хорошо) - это определить ВСЕ на вашей ленте заранее, а затем установить для свойства VISIBLE значение false или true, в зависимости от того, какой документ загружен, или что-то еще, что происходит в вашем надстройке. .

person DarinH    schedule 10.05.2011
comment
Звучит многообещающе. Это также работает для отключения (не скрытия) внутренних команд или при использовании startFromScratch? - person John Doe; 10.05.2011
comment
На странице msdn я думаю, что это не сработает для StartFromScratch (см. Раздел «Примечания»): msdn.microsoft.com/en-us/library/ - person Mathias; 12.05.2011
comment
Это вполне возможно. Мне пока не нужно было начинать с нуля. Это в основном отключает ВСЕ внутренне определенные ленты, не так ли? Если это так, то это означает, что потребуется гораздо больше работы, чтобы переопределить все те элементы, которые уже определены Word (не говоря уже о том, чтобы Word сильно отличался от стандартного, что, я не уверен, обычно хорошо, хотя я предположим, что в очень ограниченных обстоятельствах вы можете захотеть это сделать. - person DarinH; 12.05.2011

@drventure прав, вы должны определить свою ленту заранее, а затем показать / скрыть различные кнопки на ленте.

Что может вам помочь, так это некоторые функции в проекте, над которым я работал, VSTO Contrib, он позволяет вам создать ViewModel, который будет создан для каждого открытого документа, и он обнаружит и подключит ленту xml с помощью соглашение.

В вашем случае это будет означать, что вы можете привязать видимость кнопок ленты к свойству в модели просмотра, и вам не нужно беспокоиться о синхронизации окна / документов. Прочтите http://jake.ginnivan.net/vsto-contrib/ribbon-factory и посмотрите, поможет ли это решить вашу проблему с помощью кода без кучи =)

person Jake Ginnivan    schedule 16.05.2011