다음을 통해 공유


도구 아키텍처

사용자는 여러 가지 복잡한 방법으로 디자이너의 내용과 상호 작용합니다. 예를 들어 클릭, 끌기, 보조키 누르고 끌기, 키보드 또는 메뉴 상호 작용을 통해 디자인 화면과 상호 작용할 수 있습니다. 확장 가능성을 위해 디자이너에서는 이러한 모든 유형의 사용자 상호 작용을 처리할 수 있는 기초를 제공해야 합니다. WPF Designer for Visual Studio에서는 유연하면서도 구조적이고 확장 가능하며 일관된 입력 시스템을 제공합니다. 도구 아키텍처의 사용자 모델은 명령, 작업 및 도구로 구성됩니다.

명령

명령은 몇 가지 동작을 나타내는 고유 식별자입니다. 예를 들어 잘라내기 명령은 텍스트 또는 개체를 잘라내어 클립보드에 추가하는 과정을 나타냅니다. 명령을 구현하는 코드는 응용 프로그램마다, 심지어 한 응용 프로그램 내에서도 다를 수 있는 반면 명령은 일정하게 유지됩니다. 모든 명령은 ICommand 인터페이스를 구현합니다.

명령 외에도 명령이 작동하도록 하는 데 필요한 다른 두 가지 요소가 있습니다. 첫 번째로 명령에는 명령을 트리거하는 사용자 입력(제스처라고 함)이 필요합니다. 예를 들어 Ctrl+X 키 입력 조합을 누르거나 메뉴에서 항목을 선택하는 것이 명령을 트리거하는 제스처일 수 있습니다. 두 번째로 명령에는 명령이 호출될 때 실행되는 코드 구현이 필요합니다.

WPF에서는 사용자 입력에 대한 정보를 지정된 명령 처리기에 전달하는 RoutedCommand라는 ICommand 인터페이스의 구현을 기본적으로 제공합니다. WPF Designer에서는 명령 처리기의 EventArgs 형식에 전달되는 디자이너 상태에 대한 정보의 양을 확장하는 ToolCommand라는 다른 명령 유형을 제공합니다.

작업

Task는 디자이너에서 발생할 수 있는 실제 작업을 나타내는 개체입니다. 예를 들어 디자이너에서 항목을 끄는 것은 Task 개체로 나타낼 수 있습니다. Task는 다음 세 개의 컬렉션을 보유합니다.

  1. 작업에서 처리되는 사용자 입력 종류를 설명하는 입력 바인딩의 컬렉션. 예를 들어 키 입력 조합이나 마우스 제스처를 나타내는 바인딩이 여기에 포함됩니다.

  2. WPF에서 라우팅되는 표준 명령의 구현을 제공하는 명령 바인딩의 컬렉션

  3. WPF Designer 도구 명령의 구현을 제공하는 도구 명령 바인딩의 컬렉션

예를 들어 앞에서 설명한 대로 디자이너에서 항목을 끄는 것을 나타내는 Task 개체에는 마우스 누르기, 마우스 이동 및 마우스 놓기를 나타내는 명령이 들어 있을 수 있습니다. Task 개체에는 이러한 각 명령에 입력 제스처를 바인딩하는 입력 바인딩도 들어 있을 수 있습니다.

도구

Tool은 사용자 입력을 처리하는 데 사용되는 클래스입니다. 모든 사용자 입력은 하나 이상의 입력 이벤트로 디자이너에 전달되며 이때 사용된 입력 제스처와 디자이너 상태에 대한 기타 정보를 나타내는 데이터가 수반됩니다. 입력 이벤트는 현재 활성 상태인 Tool 개체로 라우팅되며 이 개체는 입력 데이터를 입력 바인딩으로 변환합니다. 표시된 입력 제스처에 대한 바인딩이 있는 경우 해당 바인딩 내의 명령이 실행됩니다.

Tool 개체는 디자이너의 전역 모드를 나타내는 데 사용됩니다. 예를 들어 사용자가 디자인 화면에서 구성 요소를 선택할 경우, 현재 도구는 입력 바인딩의 컬렉션을 제공하는 작업과 함께 특정 입력 제스처를 해당 작업을 사용할 수 있게 하는 특정 명령에 바인딩하는 명령을 제공하므로 전역 모드가 사용됩니다. 사용자가 새 컨트롤을 만드는 경우에는 활성 도구가 달라지며, 해당 도구는 사용자가 동일한 제스처를 사용할 수 있도록 하되 이를 다른 명령에 바인딩하는 다른 바인딩 집합을 제공합니다.

참고 항목

참조

Tool

Task

ToolCommand

ICommand

개념

사용자 입력 및 표현 아키텍처

WPF Designer 확장성 아키텍처