Как программно отключить кнопки или добавить / удалить элементы из dropDown с интерфейсом Office Ribbon - PullRequest
3 голосов
/ 09 мая 2011

Я написал простую надстройку C ++ COM Office, которая загружает определение XML ленты и отображает простую вкладку ленты.Он имеет несколько кнопок и dropDown (выпадающий список / выпадающий список).Я могу обрабатывать события нажатия кнопок и события изменения выбора комбо, как талисман.

Теперь я хочу обновить пользовательский интерфейс ленты в соответствии с изменениями в активном документе, чтобы некоторые кнопки были отключены, а некоторые элементы добавлены / удалены из выпадающего списка.

Я искал вверх и вниз и не мог найти способ контролировать это.Я что-то упускаю очень очевидное?Как я могу изменить состояние включения кнопки из любого места в моем коде?

1 Ответ

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

То, как я это сделал, с помощью элемента управления ленты Windows: дополнительные кнопки должны быть указаны в разметке XML во время разработки.Во время выполнения вы вызываете SetModes(), чтобы указать, какие наборы виджетов будут отображаться на ленте.

Примерно так:

  <Application.Views>
    <Ribbon>
      <Ribbon.Tabs>
        <Tab CommandName="cmdTabMain" ApplicationModes="0,1">
          <Group CommandName="cmdGroupCommon" 
                 SizeDefinition="ThreeButtons" 
                 ApplicationModes="0,1">
            <Button CommandName="cmdButtonNew" />
            <Button CommandName="cmdButtonOpen" />
            <Button CommandName="cmdButtonSave" />
          </Group>
          <Group CommandName="cmdGroupSimple" 
                 SizeDefinition="TwoButtons" 
                 ApplicationModes="0">
            <Button CommandName="cmdButtonSwitchToAdvanced" />
            <Button CommandName="cmdButtonDropA" />
          </Group>
          <Group CommandName="cmdGroupAdvanced" 
                 SizeDefinition="FourButtons" 
                 ApplicationModes="1">
            <Button CommandName="cmdButtonSwitchToSimple" />
            <Button CommandName="cmdButtonDropA" />
            <Button CommandName="cmdButtonDropB" />
            <Button CommandName="cmdButtonDropC" />
          </Group>
        </Tab>
      </Ribbon.Tabs>
    </Ribbon>
  </Application.Views>

Затем (в любом случае в C #) в обработчике кликов вы делаете _ribbon.SetModes(1) или _ribbon.SetModes(0).

enter image description here

...