TOC

This article is currently in the process of being translated into Korean (~97% done).

커멘드:

Introduction to WPF Commands

이전 장에서 사용자가 버튼 혹은 메뉴를 클릭할 때와 같이 이벤트들을 다루는 방법에 대해서 알아 보았다. 현대 UI는 사용자의 다른 동작들을 여러 장소를 거쳐 함수로 도달가능하게 하는 것이 일반적입니다.

예를 들어, 메인 메뉴와 도구 모음 세트가 있는 일반적인 인터페이스의 경우 메뉴, 도구 모음, 상황에 맞는 메뉴(예: 기본 애플리케이션 영역에서 마우스 오른쪽 클릭 시), Ctrl+N 및 Ctrl+O 같은 키보드 단축키를 통해 새로 만들기 또는 열기와 같은 작업을 사용할 수 있습니다.

이러한 각 작업은 일반적으로 정확히 동일한 코드를 수행해야 하므로 WinForms 애플리케이션에서는 각 작업에 대한 이벤트를 정의한 다음 공통 함수를 호출해야 합니다. 위의 예에서는 최소한 3개의 이벤트 핸들러와 키보드 단축키를 처리하는 코드가 필요합니다. 단축키를 처리하는 코드가 필요합니다. 이상적인 상황은 아닙니다.

Commands

Microsoft는 WPF를 통해 Command라는 개념으로 이러한 문제를 해결하려고 합니다. 이를 통해 한 곳에서 작업을 정의한 다음 메뉴 항목, 도구 모음 버튼 등과 같은 모든 사용자 인터페이스 컨트롤에서 해당 작업을 참조할 수 있습니다. 또한 WPF는 키보드 단축키를 수신하여 적절한 Command가 있는 경우 이를 전달하므로 애플리케이션에서 키보드 단축키를 제공하는 데 이상적인 방법입니다.

Command는 또한 동일한 기능에 대한 여러 입구를 처리할 때 또 다른 번거로움을 해결해 줍니다. WinForms 애플리케이션에서는 해당 작업을 사용할 수 없을 때 사용자 인터페이스 요소를 비활성화할 수 있는 코드를 작성해야 합니다. 예를 들어, 애플리케이션에서 잘라내기와 같은 클립보드 Command를 사용할 수 있지만 텍스트가 선택된 경우에만 사용할 수 있다면 텍스트 선택이 변경될 때마다 주 메뉴 항목, 도구 모음 버튼 및 상황에 맞는 메뉴 항목을 수동으로 활성화 및 비활성화해야 합니다.

WPF Command를 사용하면 이 작업이 중앙 집중화됩니다. 한 가지 방법으로 지정된 Command의 실행 여부를 결정하면 WPF가 모든 구독 인터페이스 요소를 자동으로 켜거나 끕니다. 따라서 반응이 빠르고 동적인 애플리케이션을 훨씬 쉽게 만들 수 있습니다!

Command bindings

Command는 실제로 그 자체로는 아무것도 수행하지 않습니다. 루트에서는 이벤트와 Execute() 및 CanExecute()의 두 개의 메서드만 정의하는 ICommand 인터페이스로 구성됩니다. 첫 번째 메서드는 실제 작업을 수행하기 위한 것이고, 두 번째 메서드는 현재 작업이 가능한지 여부를 판단하기 위한 것입니다. 명령의 실제 동작을 수행하려면 Command와 코드 사이의 링크가 필요하며, 바로 이 부분에서 CommandBinding이 작동합니다.

CommandBinding은 일반적으로 Window 또는 UserControl에 정의되며, 처리하는 Command에 대한 참조와 Command의 Execute() 및 CanExecute() 이벤트를 처리하기 위한 실제 이벤트 핸들러를 보유합니다.

Pre-defined commands

물론 다음 장에서 살펴볼 자체 Command를 구현할 수도 있지만, 더 쉽게 사용할 수 있도록 WPF 팀에서 일반적으로 사용되는 100개 이상의 Command를 정의했습니다. 이러한 Command는 ApplicationCommands, NavigationCommands, MediaCommands, EditingCommands 및 ComponentCommands라는 5가지 카테고리로 나뉩니다. 특히 애플리케이션 명령에는 새로 만들기, 열기, 저장 및 잘라내기, 복사 및 붙여넣기와 같이 자주 사용하는 작업에 대한 Command가 많이 포함되어 있습니다.

Summary

Command를 사용하면 단일 이벤트 핸들러를 사용하여 여러 소스의 공통 작업에 응답할 수 있습니다. 또한 현재 사용 가능 여부와 상태에 따라 사용자 인터페이스 요소를 훨씬 쉽게 활성화 및 비활성화할 수 있습니다. 지금까지는 모두 이론적인 설명이었지만 다음 장에서는 Command가 사용되는 방법과 사용자 지정 Command를 정의하는 방법에 대해 설명하겠습니다.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!
Table of Contents