Поделиться через


Отображение контекстных вкладок

В приложении Платформы ленты Windows контекстная вкладка — это скрытый элемент управления Tab , который отображается в строке вкладок при выборе или выделении объекта в рабочей области приложения, например изображения.

Введение

В отличие от основных вкладок, которые содержат различные общие команды, которые актуальны независимо от контекста рабочей области, контекстные вкладки обычно содержат одну или несколько команд, применимых только к выбранному или выделенному объекту.

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

Примечание

Помимо нескольких контекстных вкладок, платформа ленты также поддерживает несколько элементов управления "Группа вкладок " на ленте.

 

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

  • Контекстные вкладки размещаются в порядке их объявления и справа от основных вкладок в строке вкладок ленты.
  • При изменении размера ленты вкладки масштабируются, а метки вкладок усекаются по мере того, как требуется место. Однако видимым контекстным вкладкам присваивается более высокий приоритет отображения, в котором они масштабируются и усекаются последними.
  • Метка для группы вкладок отображается в строке заголовка приложения и охватывает все связанные контекстные вкладки.
  • При одновременном отображении нескольких элементов управления "Группа вкладок " фону каждой группы вкладок в строке заголовка приложения назначается один из пяти уникальных цветов. Этот цвет также используется в качестве цвета выделения для контекстных вкладок в группе вкладок.
  • Назначение цвета группы табуляции основано на порядке объявления элементов группы вкладок в разметке. Цвета определяются платформой и не могут быть заданы приложением.
  • Цвета группы вкладок , определенные платформой, можно изменить косвенно с помощью ключей свойств Свойства платформы . Дополнительные сведения см. в разделе Настройка цветов ленты.
  • Если в любой момент времени отображается более пяти элементов управления "Группа вкладок ", платформа циклически использует связанные цвета.
  • Максимальное количество элементов управления TAB на ленте ограничено 100. Сюда входят контекстные вкладки, видимые или невидимые.

На следующем снимке экрана показана контекстная вкладка из Windows 7 Paint.

Снимок экрана: элемент управления контекстной вкладкой.

Реализация контекстных вкладок

В этом разделе рассматриваются сведения о реализации контекстных вкладок ленты и показано, как включить их в приложение ленты.

разметку

В следующих примерах показана базовая разметка для элемента TabGroup , содержащего две контекстные вкладки.

В этом разделе кода показаны объявления TabGroup и Tab Command.

<!-- Contextual Tabs -->
<Command Name='cmdContextualTab1'
         LabelTitle='Contextual Tab 1'
         Symbol='ID_CONTEXTUALTAB1'/>
<Command Name='cmdContextualTab2'
         LabelTitle='Contextual Tab 2'
         Symbol='ID_CONTEXTUALTAB2'/>
<Command Name='cmdContextualTabGroup'
         LabelTitle='Contextual Tabs'
         Symbol='ID_CONTEXTUALTAB_GROUP'/>

В этом разделе кода показаны объявления элементов управления, необходимые для отображения двух контекстных вкладок в группе TabGroup.

      <Ribbon.ContextualTabs>
        <TabGroup CommandName='cmdContextualTabGroup'>
          <Tab CommandName='cmdContextualTab1'>
            <!--InRibbonGallery Group-->
            <Group CommandName='cmdInRibbonGalleryGroup'
                   SizeDefinition='OneInRibbonGallery'>
              <InRibbonGallery CommandName='cmdTextSizeGallery3'
                               HasLargeItems='true'
                               ItemHeight='32'
                               ItemWidth='32'
                               MaxColumns='3' >
                <InRibbonGallery.MenuLayout>
                  <FlowMenuLayout Columns='3'
                                  Gripper ='Corner'/>
                </InRibbonGallery.MenuLayout>
              </InRibbonGallery>
            </Group>
            <!--Command Galleries Group-->
            <Group CommandName='cmdCommandGalleriesGroup'
                   SizeDefinition='OneInRibbonGallery'>
              <InRibbonGallery CommandName='cmdCommandGallery1'
                               Type='Commands'
                               MaxRows='3'
                               MaxColumns='3'>
                <InRibbonGallery.MenuLayout>
                  <FlowMenuLayout Columns='3'
                                  Gripper ='Corner'/>
                </InRibbonGallery.MenuLayout>
              </InRibbonGallery>
            </Group>
          </Tab>
          <Tab CommandName='cmdContextualTab2'></Tab>
        </TabGroup>
      </Ribbon.ContextualTabs> 

Код

UI_PKEY_ContextAvailable — это один ключ свойства, определенный платформой для указания видимости и состояния контекстных вкладок. При выборе объекта в рабочей области приложения этому свойству может быть присвоено одно из трех значений перечисления UI_CONTEXTAVAILABILITY , которые определяют, существует ли контекстная вкладка и, если она есть, отображается ли она как активная вкладка.

Приложение запрашивает обновление группы вкладок путем отмены и обновления свойства UI_PKEY_ContextAvailable при изменении контекста рабочей области.

В следующих разделах кода показано, как отобразить контекстную вкладку при выборе изображения в рабочей области приложения.

// Initialize the image tools contextual tab visibility setting.
UI_CONTEXTAVAILABILITY g_ImageTools = UI_CONTEXTAVAILABILITY_NOTAVAILABLE;

// Called when an image is selected in the application.
void SelectImage()
{
  ...
  g_ImageTools = UI_CONTEXTAVAILABILITY_ACTIVE;

  // Invalidate the UI_PKEY_ContextAvailable property of the image tools  
  // contextual tab Command and trigger the UpdatePropery callback function.
  pUIFramework->InvalidateUICommand(
                  cmdImageTabSet, 
                  UI_INVALIDATIONS_PROPERTY, 
                  UI_PKEY_ContextAvailable);
  ...
}

// Update Tab Group properties.
HRESULT MyTabGroupCommandHandler::UpdateProperty(
                                  UINT nCmdID,
                                  REFPROPERTYKEY key,
                                  const PROPVARIANT* ppropvarCurrentValue,
                                  PROPVARIANT* ppropvarNewValue)
{
  HRESULT hr = E_FAIL;

  if (key == UI_PKEY_ContextAvailable)
  {
    hr = UIInitPropertyFromUInt32(key, g_ImageTools, ppropvarNewValue);
  }
  ...
  return hr;
}

Руководство по взаимодействию с пользователем на ленте

Процесс разработки ленты