共用方式為


顯示內容索引標籤

在 Windows 功能區架構應用程式中,內容相關索引標籤是隱藏的 Tab 控制項,會在應用程式工作區中的物件,例如選取或醒目提示影像時,顯示在索引標籤列中。

簡介

相較于核心索引標籤,其中包含各種與工作區內容相關的常見命令,內容索引標籤通常包含一或多個僅適用于選取或醒目提示物件的命令。

在應用程式工作區中選取或醒目提示物件時,物件的類型和內容可能需要不同的命令,在一個內容索引標籤上沒有組織或功能意義。在這些情況下,可能需要包含于 索引標籤群組內的多個內容索引標籤。 例如,選取資料表資料格中包含的影像可能需要兩個內容相關的索引標籤來公開資料表和影像功能。

注意

除了多個內容索引標籤之外,功能區架構也支援功能區內的多個 索引標籤群組 控制項。

 

顯示內容相關的索引標籤時,功能區架構會強制執行一組基本的行為,包括:

  • 內容索引標籤會依宣告的順序,以及功能區索引標籤資料列中核心索引標籤右邊的順序來定位。
  • 當功能區調整大小時,會調整索引標籤,並截斷索引標籤,因為空間需要。 不過,可見的內容索引標籤會提供較高的顯示優先順序,以便最後調整和截斷這些索引標籤。
  • 索引標籤 群組 的標籤會顯示在應用程式標題列中,並跨越所有相關聯的內容索引標籤。
  • 同時顯示多個 索引標籤群組 控制項時,會將五個唯一色彩的其中一個指派給應用程式標題列中每個索引標籤群組的背景。 此色彩也會做為索引標籤群組中內容索引標籤的醒目提示色彩。
  • 索引標籤群組色彩指派是根據索引標籤群組元素在標記中宣告的順序。 色彩是由架構所定義,而且無法由應用程式指定。
  • 架構所定義的 索引標籤群組 色彩可以透過 Framework 屬性 索引鍵間接修改。 如需詳細資訊,請參閱 自訂功能區色彩
  • 每當任何一次顯示超過五個 索引標籤群組 控制項時,架構就會迴圈顯示相關聯的色彩。
  • 功能區中的 Tab 控制項數目上限限制為 100。 這包括內容索引標籤、可見或不可見。

下列螢幕擷取畫面顯示 Windows 7 Paint 的內容索引標籤。

顯示內容型索引標籤控制項的螢幕擷取畫面。

實作內容索引標籤

本節討論功能區內容索引標籤的實作詳細資料,並逐步解說如何在功能區應用程式中納入這些索引標籤。

加成

下列範例示範包含兩個內容索引標籤之 TabGroup 元素的基本標記。

此程式碼區段會顯示 TabGroupTab 命令宣告。

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

功能區使用者體驗指導方針

功能區設計程式