Anzeigen kontextbezogener Registerkarten

In einer Windows-Menübandframeworkanwendung ist eine kontextbezogene Registerkarte ein ausgeblendetes TAB-Steuerelement , das in der Registerkartenzeile angezeigt wird, wenn ein Objekt im Anwendungsarbeitsbereich, z. B. ein Bild, ausgewählt oder hervorgehoben ist.

Einführung

Im Gegensatz zu Hauptregisterkarten, die verschiedene allgemeine Befehle enthalten, die unabhängig vom Arbeitsbereichskontext relevant sind, enthalten kontextbezogene Registerkarten in der Regel einen oder mehrere Befehle, die nur für ein ausgewähltes oder hervorgehobenes Objekt gelten.

Wenn ein Objekt im Anwendungsarbeitsbereich ausgewählt oder hervorgehoben wird, sind Typ und Kontext des Objekts möglicherweise unterschiedliche Befehle erforderlich, die auf einer kontextbezogenen Registerkarte weder organisatorisch noch funktionell sinnvoll sind. In diesen Fällen sind möglicherweise mehrere kontextbezogene Registerkarten erforderlich, die in einer Registerkartengruppe enthalten sind. Wenn Sie beispielsweise ein In einer Tabellenzelle enthaltenes Bild auswählen, sind möglicherweise zwei kontextbezogene Registerkarten erforderlich, die sowohl Tabellen- als auch Bildfunktionen verfügbar machen.

Hinweis

Zusätzlich zu mehreren kontextbezogenen Registerkarten unterstützt das Menübandframework auch mehrere Registerkartengruppensteuerelemente in einem Menüband.

 

Beim Anzeigen kontextbezogener Registerkarten erzwingt das Menübandframework eine Reihe grundlegender Verhaltensweisen, die Folgendes umfassen:

  • Kontextbezogene Registerkarten werden in der Reihenfolge positioniert, in der sie deklariert werden, und rechts neben den Hauptregisterkarten in der Zeile der Menübandregisterkarte.
  • Wenn die Größe des Menübands geändert wird, werden Registerkarten skaliert und Registerkartenbeschriftungen abgeschnitten, wenn der Speicherplatz erforderlich ist. Sichtbare kontextbezogene Registerkarten erhalten jedoch eine höhere Anzeigepriorität, in der sie skaliert und zuletzt abgeschnitten werden.
  • Die Bezeichnung für eine Registerkartengruppe wird in der Titelleiste der Anwendung angezeigt und umfasst alle zugeordneten kontextbezogenen Registerkarten.
  • Wenn mehrere Registerkartengruppensteuerelemente gleichzeitig angezeigt werden, wird dem Hintergrund jeder Registerkartengruppe in der Titelleiste der Anwendung eine von fünf eindeutigen Farben zugewiesen. Diese Farbe wird auch als Hervorhebungsfarbe für die kontextbezogenen Registerkarten in der Registerkartengruppe verwendet.
  • Die Farbzuweisung der Registerkartengruppe basiert auf der Reihenfolge, in der die Elemente der Registerkartengruppe im Markup deklariert werden. Die Farben werden vom Framework definiert und können von der Anwendung nicht angegeben werden.
  • Die vom Framework definierten Farben der Registerkartengruppe können indirekt über die Eigenschaftenschlüssel der Frameworkeigenschaften geändert werden. Weitere Informationen finden Sie unter Anpassen von Menübandfarben.
  • Wenn mehr als fünf Registerkartengruppensteuerelemente gleichzeitig angezeigt werden, werden die zugehörigen Farben vom Framework zyklent.
  • Die maximale Anzahl von TAB-Steuerelementen in einem Menüband ist auf 100 begrenzt. Dies schließt kontextbezogene Registerkarten ein, die sichtbar sind oder nicht.

Der folgende Screenshot zeigt eine kontextbezogene Registerkarte aus Windows 7 Paint.

Screenshot, der ein kontextbezogenes Registerkartensteuerelement zeigt.

Implementieren kontextbezogener Registerkarten

In diesem Abschnitt werden die Implementierungsdetails von Kontextregisterkarten im Menüband erläutert und die Integration in eine Menübandanwendung beschrieben.

Markup

Die folgenden Beispiele veranschaulichen das grundlegende Markup für ein TabGroup-Element , das zwei kontextbezogene Registerkarten enthält.

In diesem Codeabschnitt werden die Deklarationen TabGroup und TabStoppbefehl angezeigt.

<!-- 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'/>

In diesem Codeabschnitt werden die Steuerelementdeklarationen veranschaulicht, die zum Anzeigen von zwei kontextbezogenen Registerkarten in einer TabGroup erforderlich sind.

      <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 ist der vom Framework definierte einzelne Eigenschaftsschlüssel zum Angeben der Sichtbarkeit und des Zustands kontextbezogener Registerkarten. Wenn ein Objekt im Anwendungsarbeitsbereich ausgewählt ist, kann dieser Eigenschaft einer von drei Werten aus der UI_CONTEXTAVAILABILITY-Enumeration zugewiesen werden, die definieren, ob eine kontextbezogene Registerkarte vorhanden ist und, falls dies der Fall ist, ob sie als aktive Registerkarte angezeigt wird.

Eine Anwendung fordert ein Tabstoppgruppenupdate an, indem sie die UI_PKEY_ContextAvailable-Eigenschaft ungültig macht und aktualisiert, wenn sich der Arbeitsbereichskontext ändert.

Die folgenden Codeabschnitte veranschaulichen, wie eine kontextbezogene Registerkarte angezeigt wird, wenn ein Bild in einem Anwendungsarbeitsbereich ausgewählt wird.

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

Richtlinien für die Benutzeroberfläche des Menübands

Menübandentwurfsprozess