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

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

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

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

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

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

태그 구조체

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

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

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

리본 구성 요소

리본 프레임워크 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)

리본 태그 컴파일