[WPF] Command WPF 2012. 3. 19. 15:40
우리가 일반적으로 알고 있는 커맨드는 메모장의 잘라내기, 복사, 붙이기 등이 있다.

WPF에서는 이러한 내용을 내장형으로 지니고 있으며 RoutedCommand와 RoutedEvent를 통하여 처리를 한다.

다음은 커맨드에 대한 간단한 테스트 코드이다.

<StackPanel>
        <Menu>
            <MenuItem Command="ApplicationCommands.Cut"/>
            <MenuItem Command="ApplicationCommands.Copy"/>
            <MenuItem Command="ApplicationCommands.Paste"/>
        </Menu>
        <TextBox x:Name="txtBox" Height="243" BorderBrush="Black" BorderThickness="2" TextWrapping="Wrap" />
    </StackPanel>

실행을 해 보면 텍스트 박스에 있는 글자를 대상으로 작업한다. 메뉴 아이템에서는 해당 커맨드 내용이 연결 된 것을 확인 할 수가 있다.

다음은 추가적인 Command 들이다.

CancelPrint CorrectionList SaveAs Undo
Close Redo Help Open
Print Replace SelectAll  Copy
ContextMenu Delete New Cut
PrintPreview Save Stop Paste
Properties Find NotACommand  

커맨드 패턴은 각각의 요구 사항을 캡슐화 하여 그 내용을 실행 시키게 한다.

예를 들어 불을 켜거나 끌 때에 각기 해당 내용이 실행되는 것을 생각해보면 될 것이다.

전문적인 용어 상황에서 본다면

클라이언트의 요구에 의해 인보커는 그 요청에 대한 내용을 실행하도록 리시버에 요청을 하면 리시버는 그 내용을 실행한다.

커맨드 패턴은 주로 스케쥴러, 스레드 풀, 큐 같은 용도에서 쓸 수가 있고

순차적으로 이루어진 작업임으로 이 전 데이터로 돌리기도 쉬운편이다.


Main에서 먼저 Remote(인보커)를 생성하고, 그 후 리시버(Command)에 특정 행동들을 요구한다(Lignt, Door).

VS2008에서의 다이어그램 구성은 저기 까지 나옴으로 샘플을 참조하는 것이 좋을 것 같다.