コンテキスト タブの表示

Windows リボン フレームワーク アプリケーションでは、コンテキスト タブは非表示の Tab コントロールであり、アプリケーション ワークスペース内のオブジェクト (イメージなど) が選択または強調表示されたときにタブ行に表示されます。

はじめに

ワークスペースのコンテキストに関係なく関連するさまざまな一般的なコマンドを含むコア タブとは対照的に、コンテキスト タブには通常、選択または強調表示されたオブジェクトにのみ適用できる 1 つ以上のコマンドが含まれます。

アプリケーション ワークスペースでオブジェクトが選択または強調表示されている場合、オブジェクトの種類とコンテキストには、1 つのコンテキスト タブで組織や機能的な意味を持たないさまざまなコマンドが必要になる場合があります。このような場合は、 タブ グループ内に含まれる複数のコンテキスト タブが必要になる場合があります。 たとえば、テーブル セルに含まれるイメージを選択するには、テーブルとイメージの両方の機能を公開する 2 つのコンテキスト タブが必要になる場合があります。

注意

リボン フレームワークでは、複数のコンテキスト タブに加えて、リボン内の複数の タブ グループ コントロールもサポートされています。

 

コンテキスト タブを表示する場合、リボン フレームワークでは、次のような基本的な動作セットが適用されます。

  • コンテキスト タブは、宣言された順序で、リボン タブ行のコア タブの右側に配置されます。
  • リボンのサイズを変更すると、タブは拡大縮小され、タブ ラベルはスペースの必要に応じて切り捨てられます。 ただし、表示されるコンテキスト タブには、最後に拡大縮小および切り捨てられる、より高い表示優先度が与えられます。
  • タブ グループのラベルがアプリケーション タイトル バーに表示され、関連付けられているすべてのコンテキスト タブにまたがっています。
  • 複数の タブ グループ コントロールを同時に表示すると、アプリケーション タイトル バーの各タブ グループの背景に 5 つの一意の色のいずれかが割り当てられます。 この色は、タブ グループのコンテキスト タブの強調表示色としても使用されます。
  • タブ グループの色の割り当ては、タブ グループ要素がマークアップで宣言されている順序に基づいています。 色はフレームワークによって定義され、アプリケーションで指定することはできません。
  • フレームワークで定義されている タブ グループ の色は、 フレームワークのプロパティ キーを使用して間接的に変更できます。 詳細については、「 リボンの色のカスタマイズ」を参照してください。
  • 5 つを超える タブ グループ コントロールが一度に表示されると、フレームワークは関連付けられている色を循環します。
  • リボン内の タブ コントロールの最大数は 100 に制限されています。 これには、コンテキスト タブ (表示されているかどうか) が含まれます。

次のスクリーン ショットは、Windows 7 Paint のコンテキスト タブを示しています。

コンテキスト タブ コントロールを示すスクリーン ショット。

コンテキスト タブの実装

このセクションでは、リボン コンテキスト タブの実装の詳細について説明し、リボン アプリケーションに組み込む方法について説明します。

マークアップ

次の例は、2 つのコンテキスト タブを含む TabGroup 要素の基本的なマークアップを示しています。

コードのこのセクションでは、 TabGroupTab 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 内に 2 つのコンテキスト タブを表示するために必要なコントロール宣言を示します。

      <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 列挙体の 3 つの値のうち 1 つを割り当てることができます。存在する場合はアクティブ タブとして表示されるかどうかを定義します。

アプリケーションは、ワークスペース コンテキストが変更されたときに、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;
}

リボン ユーザー エクスペリエンスのガイドライン

リボンのデザイン プロセス