Partager via


Affichage des onglets contextuels

Dans une application d’infrastructure de ruban Windows, un onglet contextuel est un contrôle Tab masqué qui s’affiche dans la ligne d’onglet lorsqu’un objet de l’espace de travail de l’application, tel qu’une image, est sélectionné ou mis en surbrillance.

Introduction

Contrairement aux onglets principaux, qui contiennent diverses commandes courantes qui sont pertinentes quel que soit le contexte de l’espace de travail, les onglets contextuels contiennent généralement une ou plusieurs commandes qui s’appliquent uniquement à un objet sélectionné ou mis en surbrillance.

Lorsqu’un objet est sélectionné ou mis en surbrillance dans l’espace de travail de l’application, le type et le contexte de l’objet peuvent nécessiter des commandes disparates qui n’ont pas de sens organisationnel ou fonctionnel sur un seul onglet contextuel. Dans ce cas, plusieurs onglets contextuels, contenus dans un groupe d’onglets, peuvent être nécessaires. Par exemple, la sélection d’une image contenue dans une cellule de tableau peut nécessiter deux onglets contextuels qui exposent à la fois les fonctionnalités de tableau et d’image.

Notes

En plus de plusieurs onglets contextuels, l’infrastructure du ruban prend également en charge plusieurs contrôles de groupe d’onglets au sein d’un ruban.

 

Lors de l’affichage d’onglets contextuels, l’infrastructure du ruban applique un ensemble de comportements de base qui incluent :

  • Les onglets contextuels sont positionnés dans l’ordre dans lequel ils sont déclarés et à droite des onglets principaux dans la ligne de l’onglet du ruban.
  • Lorsque le ruban est redimensionné, les onglets sont mis à l’échelle et les étiquettes d’onglet sont tronquées en fonction de l’espace nécessaire. Toutefois, les onglets contextuels visibles bénéficient d’une priorité d’affichage plus élevée dans laquelle ils sont mis à l’échelle et tronqués en dernier.
  • L’étiquette d’un groupe d’onglets s’affiche dans la barre de titre de l’application et s’étend sur tous les onglets contextuels associés.
  • Lorsque plusieurs contrôles groupe d’onglets sont affichés en même temps, l’une des cinq couleurs uniques est affectée à l’arrière-plan de chaque groupe d’onglets dans la barre de titre de l’application. Cette couleur est également utilisée comme couleur de surbrillance pour les onglets contextuels du groupe Tab.
  • L’attribution de couleur groupe d’onglets est basée sur l’ordre dans lequel les éléments du groupe d’onglets sont déclarés dans le balisage. Les couleurs sont définies par l’infrastructure et ne peuvent pas être spécifiées par l’application.
  • Les couleurs du groupe d’onglets définies par l’infrastructure peuvent être modifiées indirectement via les clés de propriété Propriétés de l’infrastructure. Pour plus d’informations, consultez Personnalisation des couleurs du ruban.
  • Lorsque plus de cinq contrôles de groupe d’onglets sont affichés à un moment donné, l’infrastructure cycles les couleurs associées.
  • Le nombre maximal de contrôles Tab dans un ruban est limité à 100. Cela inclut les onglets contextuels, visibles ou non.

La capture d’écran suivante montre un onglet contextuel de Windows 7 Paint.

capture d’écran montrant un contrôle d’onglet contextuel.

Implémentation d’onglets contextuels

Cette section décrit les détails d’implémentation des onglets contextuels du ruban et explique comment les incorporer dans une application ruban.

balisage

Les exemples suivants illustrent le balisage de base d’un élément TabGroup qui contient deux onglets contextuels.

Cette section de code affiche les déclarations TabGroup et 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'/>

Cette section de code présente les déclarations de contrôle requises pour afficher deux onglets contextuels au sein d’un 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> 

Code

UI_PKEY_ContextAvailable est la clé de propriété unique définie par l’infrastructure pour spécifier la visibilité et l’état des onglets contextuels. Lorsqu’un objet est sélectionné dans l’espace de travail de l’application, cette propriété peut se voir attribuer l’une des trois valeurs de l’énumération UI_CONTEXTAVAILABILITY qui définissent si un onglet contextuel existe et, le cas échéant, s’il s’affiche en tant qu’onglet actif.

Une application demande une mise à jour du groupe d’onglets en invalidant et en mettant à jour la propriété UI_PKEY_ContextAvailable lorsque le contexte de l’espace de travail change.

Les sections suivantes du code montrent comment afficher un onglet contextuel lorsqu’une image est sélectionnée dans un espace de travail d’application.

// 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;
}

Instructions relatives à l’expérience utilisateur du ruban

Processus de conception du ruban