삽질의 현장/- .NET

#116_닷넷(.NET)_ WPF_ Command 처리

shovelman 2015. 12. 6. 16:25


안녕하세요 삽잡이입니다.


이번 시간에는 커멘드 처리에 대해서 알아보려고합니다.


커멘드란, 우리 말로 명령입니다.

그래서 이 커멘드라는 용어를 WPF에서는

명령 객체를 만들고 사용하는 방법이라고도 합니다.


복사하기에 대한 예시를 들어보자면,

드래그하여 Ctrl +C / V를 통해 복,붙이 가능하고,
복사하기라는 UI 요소를 통해 복,붙을 하기도 하지요.

어찌됬건, Ctrl + V를 하던, 복사 버튼을 누르던 등등
모두 클립보드에 포커스가 가지고 있는 내용물을 
집어넣으려 한다는 사실은 똑같다는 것입니다.

 


어떠한 경우던,

행동은 똑같기 때문에 이럴 때 커멘드 객체를 만드는 것입니다.

즉, 각각의 이벤트에 대한 핸들러를 일일히 만들 필요 없이,

명령에 대한 인터페이스를 만드는 것이지요.


이와 같이 명령 객체를 만들어 놓기만 한다면,

각기다른 객체들은 명령 객체만을 알고 있으면 되고,

이제는 이벤트 핸들러를 따로 만들 필요 없이

명령이 발생했을 때, 어떤 동작을 보일 것인지에 대한 핸들러 하나만 만들어 놓으면 됩니다.


명령 객체와 핸들러를 연결하는 과정을 바로

Command Binding이라고 부르지요.


이처럼 Command 처리를 하게 된다면,

중복 코드를 최소화 하는 동시에,

객체들이 만들어지기 전 부터 미리 만들어낼 수 있다는 장점을 가지게 됩니다.


위에서 복사, 붙여넣기에 대한 예시를 들었는데 이어서 해보자면...

Command 처리를 통해서,

어떤 이벤트가 발생 및 동작 수행이 되던지간에

하고 싶은 동작이 붙여넣기라는 동작임을 알 수 있으며,

핸들러 입장에서는 누구든 상관없이 명령 객체만 관심을 가지면 되겠군요.


따라서, WPF에서는 UI 요소에 

미리 기본적으로 자기가 하고자하는 Command 동작들을 제공합니다.

즉, 기본적인 UI 요소들은 Command 동작을 가지고 있다 이겁니다.


그런데, 재미있는 것은 Ctrl + C / V 입니다.

이는 키 입력 값 아닙니까?

단지 키 값을 특수하게 만들기 위해서는 Input Binding 과정을 거치면 됩니다.


어찌됬건...

이벤트를 발생하고자 하는 객체들을 명령 객체 원본이라고 하고,

UI 요소들은 명령 객체 대상이라고 부릅니다.

그리고, 명령을 표현하는 객체를 명령 객체라고 부르지요.


아까도 말씀드렸지만,

UI 요소(대상)과 명령 객체를 연결하는 작업을 

Command Binding이라고 하고,

키 값을 특수하게 명령을 실행할 수 있도록 연결을 지어주는 경우를

Input Binding이라고 합니다.



이렇게 메뉴던지...



버튼이던지...


Command 특성을 통해 명령 객체와 연결지어줄 수 있습니다.

미리 동작에 대해 정의를 해두었기 때문에 쉽게 사용할 수 있고,

명령을 내리는 녀석도 마찬가지로 굳이 핸들러를 알 필요 없이 

명령 객체까지만 알면 알아서 핸들러 처리를 해주니

신경쓰지 않아도 되게됩니다.


이게 바로 명령 객체에 대한 개념입니다.



이번 시간은 여기까지 하도록 하겠습니다.

이상 삽잡이였습니다!