Добавить пользовательскую группу ленты в существующую пользовательскую группу ленты в Word 2007 - PullRequest
4 голосов
/ 16 июня 2010

Как добавить новую группу в существующую (стороннюю) надстройку вкладки ленты? Я знаю, что могу добавить готовые ленты, указав значение idMSo для вкладок, но как это сделать для пользовательской вкладки ленты. Я уже пробовал значение идентификатора пользовательской ленты, но она дублирует ленту? также пробовал атрибуты idMso и idQ, передавая требуемый идентификатор пользовательской вкладки, но безуспешно.

Я могу добавить его в группу вкладок вне поля, указав значение idMso, но не в пользовательскую вкладку

привет

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

idQ - верный путь. Этот атрибут позволяет вам указать квалифицированный идентификатор, то есть идентификатор в пространстве имен. Некоторые пространства имен, такие как mso, встроены, но можно также указать пользовательские пространства имен.

Ключ в том, что вам необходим атрибут xmlns:foo="bar" в вашем элементе customUI, который соответствует пространству имен, объявленному в customUI надстройки третьей стороны, которую вы пытаетесь расширить.

Например, предположим, у меня есть XML для следующей сторонней надстройки:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"
              xmlns:foo="bar">
  <mso:ribbon>
    <mso:tabs>
      <mso:tab idQ="foo:someTab" label="an extensible custom tab">
        <mso:group id="someGroup" label="a custom group">
          <mso:button id="someButton" label="button" />
        </mso:group>
      </mso:tab>
    </mso:tabs>
  </mso:ribbon>
</mso:customUI>

Теперь я хочу расширить существующую foo:someTab новой группой в другой надстройке или шаблоне. Я определяю customUI в новой надстройке, убедившись, что в элементе customUI указан тот же атрибут пространства имен. Затем я ссылаюсь на существующую вкладку, используя idQ="foo:someTab":

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"
                  xmlns:foo="bar">
      <mso:ribbon>
        <mso:tabs>
          <mso:tab idQ="foo:someTab" label="an extensible custom tab">
            <mso:group id="someOtherGroup" label="a different custom group">
              <mso:button id="someOtherButton" label="a different button" />
            </mso:group>
          </mso:tab>
        </mso:tabs>
      </mso:ribbon>
    </mso:customUI>

В результате две группы на одной пользовательской вкладке. Тот же подход можно использовать для расширения групп и других элементов управления контейнером.

Я узнал об этом благодаря тщательному изучению интерфейса пользователя ленты Office 10 XSD . К сожалению, он плохо документирован за пределами самого XSD.

0 голосов
/ 09 апреля 2011

Материал ленты в слове немного странный. По сути, я так понимаю, что Word запрашивает ваше добавление за один раз, через GetCustomUI, для любого пользовательского интерфейса, объявлений Ribbom, backstage и т. Д., Которые вы хотите включить.

И это единственный шанс, который у тебя есть. Вы не можете динамически добавлять кнопки, как только вы произнесете слово XML для элементов пользовательского интерфейса. Однако вы МОЖЕТЕ скрыть скрытые элементы, чтобы они выглядели так, как будто вы динамически добавляете элементы на ленту.

Проблема со сторонней лентой состоит в том, что Word уже получил пользовательский интерфейс от стороннего приложения, так что, скорее всего, вы столкнетесь с той же проблемой, что и третья сторона, если они захотят динамически добавить кнопку к своему. собственная лента.

Я полагаю, что Word предпринимает дополнительные шаги, чтобы позволить вам добавлять кнопки к "встроенным" лентам, но, насколько я знаю, это не распространяется на пользовательские ленты.

...