다음을 통해 공유


상황에 맞는 탭 표시

Windows 리본 프레임워크 애플리케이션에서 상황별 탭은 이미지와 같은 애플리케이션 작업 영역의 개체를 선택하거나 강조 표시할 때 탭 행에 표시되는 숨겨진 Tab 컨트롤입니다.

소개

작업 영역 컨텍스트에 관계없이 관련된 다양한 공통 명령이 포함된 핵심 탭과 달리 컨텍스트 탭에는 일반적으로 선택되거나 강조 표시된 개체에만 적용할 수 있는 하나 이상의 명령이 포함됩니다.

애플리케이션 작업 영역에서 개체를 선택하거나 강조 표시할 때 개체의 형식과 컨텍스트에는 하나의 컨텍스트 탭에서 조직 또는 기능적 의미를 부여하지 않는 서로 다른 명령이 필요할 수 있습니다. 이러한 경우 탭 그룹에 포함된 여러 컨텍스트 탭이 필요할 수 있습니다. 예를 들어 테이블 셀에 포함된 이미지를 선택하려면 테이블 및 이미지 기능을 모두 노출하는 두 개의 상황별 탭이 필요할 수 있습니다.

참고

리본 프레임워크는 여러 상황별 탭 외에도 리본 메뉴 내에서 여러 탭 그룹 컨트롤을 지원합니다.

 

상황에 맞는 탭을 표시할 때 리본 프레임워크는 다음을 포함하는 기본 동작 집합을 적용합니다.

  • 상황별 탭은 선언된 순서대로 배치되고 리본 탭 행의 핵심 탭 오른쪽에 배치됩니다.
  • 리본의 크기를 조정하면 탭의 크기가 조정되고 공간 요구 사항에 따라 탭 레이블이 잘립니다. 그러나 표시되는 상황별 탭에는 마지막으로 크기가 조정되고 잘리는 더 높은 표시 우선 순위가 지정됩니다.
  • 탭 그룹의 레이블은 애플리케이션 제목 표시줄에 표시되며 연결된 모든 컨텍스트 탭에 걸쳐 있습니다.
  • 여러 탭 그룹 컨트롤이 동시에 표시되면 애플리케이션 제목 표시줄에 있는 각 탭 그룹의 배경에 5가지 고유한 색 중 하나가 할당됩니다. 이 색은 탭 그룹의 상황에 맞는 탭에 대한 강조 색으로도 사용됩니다.
  • 탭 그룹 색 할당은 탭 그룹 요소가 태그에 선언된 순서를 기반으로 합니다. 색은 프레임워크에 의해 정의되며 애플리케이션에서 지정할 수 없습니다.
  • 프레임워크에서 정의한 탭 그룹 색은 프레임워크 속성 키를 통해 간접적으로 수정할 수 있습니다. 자세한 내용은 리본 색 사용자 지정을 참조하세요.
  • 한 번에 5개 이상의 탭 그룹 컨트롤이 표시되면 프레임워크는 연결된 색을 순환합니다.
  • 리본 메뉴의 최대 Tab 컨트롤 수는 100개로 제한됩니다. 여기에는 표시 여부와 관계없이 상황에 맞는 탭이 포함됩니다.

다음 스크린샷은 Windows 7 그림판의 상황별 탭을 보여줍니다.

상황별 탭 컨트롤을 보여 주는 스크린샷

상황에 맞는 탭 구현

이 섹션에서는 리본 메뉴 상황에 맞는 탭의 구현 세부 정보를 설명하고 리본 애플리케이션에 통합하는 방법을 안내합니다.

태그

다음 예제에서는 두 개의 상황별 탭이 포함된 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 속성을 무효화하고 업데이트하여 Tab 그룹 업데이트를 요청합니다.

다음 코드 섹션에서는 애플리케이션 작업 영역에서 이미지를 선택할 때 상황에 맞는 탭을 표시하는 방법을 보여 줍니다.

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

리본 메뉴 사용자 환경 지침

리본 디자인 프로세스