리본 태그를 사용하여 명령 및 컨트롤 선언
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와 연결되는 방법을 보여 줍니다.
이 섹션에서는 새로 만들기, 열기 및 저장과 같은 기본 명령을 사용하여 애플리케이션 메뉴에 필요한 명령 선언을 보여 줍니다.
<!-- 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="&New"/> <Command Name="cmdOpen" Symbol="ID_FILE_OPEN" Comment="Open" Id="25002" LabelTitle="&&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 && 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" />
이 섹션에서는 연결된 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
관련 항목