명령 및 컨트롤 이해

프레젠테이션에서 논리를 분리하는 것은 Windows 리본 프레임워크의 명령 프레젠테이션 시스템에 영감을 주는 디자인 철학입니다. 이 시스템은 기능과 동작이 이 기능을 노출하는 컨트롤과 독립적으로 구현되는 디자인 패턴을 기반으로 합니다.

소개

이 문서에서는 리본 프레임워크 명령 시스템의 설계에 대해 설명합니다. 명령 및 컨트롤의 개념을 설명하고 함께 작동하여 다양한 새로운 UI 기능으로 풍부한 명령 환경을 제공하는 방법을 살펴봅니다.

Windows 리본 명령 시스템

리본 프레임워크에서 명령 및 컨트롤은 독립적인 엔터티입니다. 명령은 특정 작업 또는 기능 클래스를 나타내는 프레젠테이션 제약 조건이 없는 추상 구조입니다. 반면에 컨트롤은 리본 UI를 통해 명령 기능을 노출하는 구체적인 개체입니다.

이러한 구분은 UI 세부 정보가 없고 작업이 호출된 방법을 관리할 필요 없이 작업의 의도에서 실행할 수 있는 명령을 정의하는 기능을 제공합니다.

컨트롤

컨트롤은 명령 프레젠테이션에 필요한 UI 개체입니다. 사용자 상호 작용 및 고유 속성 및 동작 집합에 따라 프레임워크에서 런타임에 렌더링 및 관리됩니다.

적응형 레이아웃이라고 하는 UI의 프레임워크 관리 유연성은 리본의 가장 큰 장점 중 하나입니다. 리본 컨트롤은 한 줄의 프레젠테이션 코드를 작성하지 않고도 다양한 런타임 요구 사항에 응답할 수 있는 프레임워크 종속 또는 개발자 정의 레이아웃 템플릿을 통해 자동으로 다시 구성할 수 있습니다. 자세한 내용은 크기 정의 및 크기 조정 정책을 통해 리본 메뉴 사용자 지정을 참조하세요.

적응형 레이아웃의 이점 외에도 다양한 복잡한 리본 컨트롤은 특정 UI 문제 공간에 대한 자체 포함 솔루션을 제공합니다. FontControl 또는 ColorPicker와 같은 정교한 상호 작용 모델을 제공하여 표준 Windows 컨트롤의 다양한 하위 컨트롤, 열거형 및 인덱스 값이 아닌 실제 글꼴 또는 색 특성의 속성 모음을 통해 더 추상적인 용어로 데이터를 조작하는 기능을 제공합니다.

명령

해당 기능을 노출하는 리본 컨트롤에 느슨하게 결합된 명령 구현은 호스트 애플리케이션의 도메인이며 이벤트 수신기, 명령 처리기 및 다양한 명령 속성의 형태를 취합니다.

명령은 고유한 ID를 사용하여 리본 태그에 선언되거나 컴파일 시 태그 컴파일러 생성 ID가 할당됩니다. 명령은 명령 이름을 통해 컨트롤과 연결되지만 컨트롤과 달리 실제 기능은 명령 ID를 통해 특정 명령 처리기에 바인딩되는 코드에서 정의됩니다.

참고

컴파일 시 이 ID는 리본 호스트 애플리케이션의 해당 명령 처리기에 명령을 노출하는 ID 정의 헤더 파일에 저장됩니다.

 

각 명령에는 UI_COMMANDTYPE 열거형에 항목이 있는 기본 명령 유형이 있습니다.

실행 중인 명령 환경

이 명령 모델의 기능은 QAT(리본 빠른 실행 도구 모음)에서 보여 줍니다. QAT는 최종 사용자에게 리본 UI의 거의 모든 컨트롤에 대한 자체 바로 가기를 쉽게 정의할 수 있는 방법을 제공합니다. 런타임에 사용자가 리본 컨트롤을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 빠른 실행 도구 모음에 추가를 선택하면 바로 가기가 QAT에 동적으로 추가됩니다.

다음 그림에서는 Windows 7 그림판의 리본에서 SplitButton 컨트롤로 표시된 명령의 붙여넣기 및 붙여넣기를 보여 줍니다.

microsoft 그림판 리본에 붙여넣기 분할 단추 그림입니다.

다음 그림에서는 Windows 7 그림판의 리본 QAT에 있는 SplitButton 컨트롤로 표시되는 명령에서 동일한 붙여넣기 및 붙여넣기를 보여 줍니다.

microsoft 페인트 qat에 붙여넣기 분할 단추의 그림입니다.

컨트롤이 QAT에서 호스트되는 경우 컨트롤의 새 instance 추가 이벤트 수신기 및 명령 처리기가 지원되지 않고도 원래 컨트롤의 모든 기능을 유지 관리합니다. 두 컨트롤은 공유 명령 식별자를 통해 동일한 리본 명령 처리기에 바인딩됩니다. 이러한 방식으로 프레임워크는 호출되는 컨트롤에 관계없이 두 컨트롤을 하나로 처리합니다.

참고

디자인 타임에 명령이 ContextPopup 에 통합될 때도 동일한 이점이 실현됩니다. 이 경우 SplitButton 컨트롤이 리본 메뉴, QAT 또는 ContextPopup에 표시되는지 여부에 관계없이 붙여넣기 명령 처리기를 사용할 수 있습니다.

 

Windows 리본 프레임워크 소개

리본 애플리케이션 만들기

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