2012-02-19 3 views
5

Это, кажется, было предложено несколько раз здесь без реального ответа:ленты доступа Элементы Programatically в XML ленты

Accessing Ribbon Controls Programatically in an XML Ribbon

Office Ribbon: How to access a control when the ribbon was created using XML

Если лента создается с помощью ленты XML, насколько как я могу сказать, нет программной экспозиции компонентов, определенных в этом xml. Единственный очевидный ограниченный способ изменить состояние этих компонентов - использовать что-то вроде события onAction, getContent, getImage, а элемент IRibbonControl предлагает очень мало для манипулирования рассматриваемым элементом (не говоря уже о том, что большинство из этих функций выполняются только один раз , при первом оказании).

Итак, я пытаюсь найти способ программного доступа к этим элементам ленты xml.

ответ

5

Невозможно программно получить доступ к элементам Ribbon при использовании Ribbon XML. Если вы хотите изменить состояние элементов управления ленты - вам нужно использовать IRibbonUI.Invalidate(), чтобы заставить новый рендеринг макета (потенциально использовать свойства, которые вызывают разные поведения во время рендеринга через обратные вызовы). Это может быть хорошей вещью, так как у вас больше контроля над тем, когда происходит рисование, если вы меняете состояние нескольких элементов.

См. related SO post об обновлении состояния управления ПЛК.

Если вы хотите программный доступ к элементам ленты, вы должны использовать Ribbon Designer. Однако, как stated on MSDN, дизайнер не поддерживает все настройки. Некоторые speculate that the designer just wraps the Ribbon XML для вас под капотом.

Вам просто нужно изучить callback mechanism utilized by the Ribbon XML - для вас не будет доступа к дереву управления.

Смежные вопросы