다음을 통해 공유


리본 태그를 사용하여 명령 및 컨트롤 선언

Windows 리본 프레임워크는 XAML(Extensible Application Markup Language)을 기반으로 하는 태그 언어를 사용하여 리본 애플리케이션의 모양을 선언적으로 구현합니다.

명령 논리에서 프레젠테이션 분리

리본 프레임워크의 명령 논리에서 프레젠테이션과 시각적 특성을 분리하는 작업은 두 가지 고유하지만 종속적인 개발 플랫폼을 통해 수행됩니다. 컨트롤 레이아웃, 크기 조정 동작, 명령 선언 및 리소스 사양은 XAML(Extensible Application Markup Language) 사양을 기반으로 하는 선언적 태그 구문의 디자인 타임 도메인입니다. 낮은 수준의 기능, 애플리케이션 후크 및 명령 처리기는 COM(구성 요소 개체 모델) 기반 인터페이스 구현에 정의됩니다.

프레젠테이션과 논리를 분리하면 다음과 같은 이점이 제공됩니다.

  • UI 개발자와 디자이너가 핵심 애플리케이션 기능과 독립적으로 리본 애플리케이션의 GUI를 구현할 수 있는 보다 효율적인 애플리케이션 개발 주기입니다. 이 핵심 기능은 전용 소프트웨어 개발자에게 맡기면 됩니다.
  • 핵심 기능을 변경하지 않고도 GUI를 변경할 수 있으므로 비용이 적게 드는 유지 관리입니다(그 반대의 경우도 마찬가지임).
  • 마크업을 통해 문자열 및 이미지 리소스를 간단하게 지정.
  • 프로토타입의 용이성.

마크업 구조

리본 프레임워크 태그의 구조 내에는 두 개의 고유 분기가 있습니다.

첫 번째 분기는 명령 및 리소스 선언(문자열 및 이미지)의 매니페스트를 포함합니다. 각 명령 항목은 프레임워크에서 명령 ID를 통해 리본 컨트롤을 애플리케이션 코드에 정의된 명령 처리기에 바인딩하는 데 사용됩니다.

두 번째 분기는 실제 컨트롤 선언을 포함합니다. 각 컨트롤은 각 명령 선언에 지정된 Name 특성에 매핑되는 CommandName 특성을 통해 명령과 연결됩니다.

리본 구성 요소

리본 프레임워크 UI 기능은 보기통해 노출됩니다. 보기는 기본적으로 프레임워크 컨트롤과 바인딩된 명령을 표시하는 데 사용되는 리본ContextPopup같은 컨테이너입니다.

리본 보기는 리본 UI에서 일반적으로 사용되는 명령을 표시하기 위한 응용 프로그램 메뉴, QAT(빠른 실행 도구 모음) 포함하는 여러 구성 요소로 구성됩니다. 컨트롤의 그룹 및 ContextPopup풍부한 상황에 맞는 메뉴 시스템을 포함하는 핵심 및 컨텍스트 .

모든 리본 구성 요소는 다음과 같은 독립 실행형 태그 파일에 선언됩니다.

  • 각 요소의 기본 속성을 지정합니다.
  • 계층 관계를 명확하게 표시합니다.
  • 레이아웃 기본 설정 및 크기 조정 힌트를 제공합니다. 리본 프레임워크 레이아웃 템플릿에 대한 자세한 내용은 크기 정의 및 크기 조정 정책통해 리본 사용자 지정을 참조하세요.
  • 이미지 및 레이블과 같은 리소스를 정의하는 방법을 제공합니다. 이미지 리소스에 대한 자세한 내용은 리본 이미지 리소스지정을 참조하세요.

다음 두 개의 리본 태그 예제에서는 리본 애플리케이션 메뉴 항목 집합이 각각 명령 이름 및 ID와 연결되는 방법을 보여 줍니다.

  1. 이 섹션에서는 새로 만들기, 열기 및 저장과 같은 기본 명령을 사용하여 애플리케이션 메뉴에 필요한 명령 선언을 보여 줍니다.

    <!-- Command declarations for the Application Menu. -->
    <Command Name="cmdFileMenu"
             Symbol="ID_FILE_MENU"
             Id="25000" />
    <!-- Command declaration for most recently used items. -->
    <Command Name="cmdMRUItems"
             Symbol="ID_FILE_MRUITEMS"
             Id="25050"/>
    <!-- Command declarations for Application Menu items. -->
    <Command Name="cmdNew"
             Symbol="ID_FILE_NEW"
             Comment="New"
             Id="25001"
             LabelTitle="&amp;New"/>
    <Command Name="cmdOpen"
             Symbol="ID_FILE_OPEN"
             Comment="Open"
             Id="25002"
             LabelTitle="&amp;&amp;Open"/>
    <Command>
      <Command.Name>cmdSave</Command.Name>
      <Command.Symbol>ID_FILE_SAVE</Command.Symbol>
      <Command.Comment>Save</Command.Comment>
      <Command.Id>25003</Command.Id>
      <Command.LabelTitle>
        <String>
          <String.Content>Label for Save</String.Content>
          <String.Id>59999</String.Id>
          <String.Symbol>strSave</String.Symbol>
        </String>
      </Command.LabelTitle>
      <Command.TooltipTitle>Tooltip title with &amp;&amp; for Save Command</Command.TooltipTitle>
      <Command.TooltipDescription>Tooltip description for Save Command.</Command.TooltipDescription>
      <Command.Keytip>s1</Command.Keytip>
    </Command>
    <Command Name="cmdPrint"
             Symbol="ID_FILE_PRINT"
             Comment="Save"
             Id="25004"
             LabelTitle="Print" />
    <Command Name="cmdExit"
             Symbol="ID_FILE_EXIT"
             Comment="Exit"
             Id="25005"
             LabelTitle="Exit" />
    
  2. 이 섹션에서는 연결된 Control 선언을 보여 줍니다.

    <!-- Control declarations for Application Menu items. -->
    <Ribbon.ApplicationMenu>
      <ApplicationMenu CommandName="cmdFileMenu">
        <!-- Most recently used items collection. -->
        <ApplicationMenu.RecentItems>
          <RecentItems CommandName="cmdMRUItems"/>
        </ApplicationMenu.RecentItems>
        <!-- Menu items collection. -->
        <MenuGroup>
          <Button CommandName="cmdNew" />
          <Button CommandName="cmdOpen" />
          <Button CommandName="cmdSave" />
        </MenuGroup>
        <MenuGroup>
          <Button CommandName="cmdPrint" />
          <Button CommandName="cmdExit" />
        </MenuGroup>
      </ApplicationMenu>
    </Ribbon.ApplicationMenu>
    

태그가 UICC(UI 명령 컴파일러) 도구를 사용하여 컴파일되면 명령 이름과 ID가 리본 호스트 애플리케이션에서 사용하는 헤더 파일에 배치됩니다.

다음은 UICC에서 생성된 헤더 파일의 예입니다.

// *****************************************************************************
// * This is an automatically generated header file for UI Element definition  *
// * resource symbols and values. Please do not modify manually.               *
// *****************************************************************************

#pragma once

#define cmdFileMenu 25000 
#define cmdNew 22001  /* New */ 
#define cmdNew_LabelTitle_RESID 60005
#define cmdOpen 22002  /* Open */ 
#define cmdOpen_LabelTitle_RESID 60006
#define cmdSave 22003  /* Save */ 
#define cmdSave_LabelTitle_RESID 60007
#define cmdSave_TooltipTitle_RESID 60008
#define cmdSave_TooltipDescription_RESID 60009

XAML(Extensible Application Markup Language)

리본 마크업 컴파일