#c# #ms-word #vsto
#c# #ms-word #vsto
Вопрос:
В настоящее время я углубляюсь в разработку надстройки VSTO и настройку ленты для Word 2010. Это работает нормально, но имеет недостаток: настройка ленты должна выполняться только для определенных документов, но не для IRibbonExtensibility.Метод GetCustomUI (), очевидно, вызывается при запуске приложения перед загрузкой любого документа. Как я могу выполнить это требование?
Ответ №1:
Вы правы, что она вызывается только один раз. Что касается вашего единственного выбора (и что сработало для меня достаточно хорошо), это определить ВСЕ в вашей ленте заранее, затем установить для свойства VISIBLE значение false или true, в зависимости от того, какой документ загружен, или что еще происходит в вашей надстройке.
Комментарии:
1. Звучит многообещающе. Работает ли это также для отключения (не скрытия) внутренних команд или при использовании startFromScratch?
2. На странице msdn я думаю, что это не сработает для StartFromScratch (см. Раздел «Примечания»): msdn.microsoft.com/en-us/library /…
3. Это вполне возможно. Мне еще не нужно было использовать start from scratch. Это в основном отключает ВСЕ внутренне определенные ленты, не так ли? Если это так, это означает, что потребуется намного больше работы, чтобы «переопределить» все те элементы, которые уже определены Word (не говоря уже о том, чтобы заставить Word выглядеть совсем не так, как обычно, что, я не уверен, обычно хорошо, хотя я полагаю, что в очень ограниченных обстоятельствах вы могли бы захотеть это сделать.
Ответ №2:
@drventure прав, вы должны заранее определить свою ленту, а затем показывать / скрывать разные кнопки на ленте.
Что может вам помочь, так это некоторые функции в проекте, над которым я работаю, VSTO Contrib, он позволяет вам создавать ViewModel, который будет создаваться для каждого открытого документа, и он будет обнаруживать и подключать XML ленты по соглашению.
В вашем случае это означало бы, что вы можете привязать видимость кнопок ленты к свойству viewmodel, и вам не нужно беспокоиться о сохранении синхронизации окна / документов. Прочитали http://jake.ginnivan.net/vsto-contrib/ribbon-factory и посмотрим, поможет ли это вам решить вашу проблему с помощью кода с меньшим количеством кучи =)