『 Keyboard 클래스 』


​Keyboard 클래스는 키보드 관련 이벤트, 메서드, 키도드상태에 관한

속성을 제공해 줍니다

다음 표는 키보드 입력 이벤트들을 나열해 놓은것 입니다

  

 

 

 

 

 

 

『 Application Commands 』

 

 

『 Application Commands 』

 

 

 

 

의존 프로퍼티는 WPF에서 새로 추가된 개념으로 가장 이해하기 쉽지 않은

개념이면서 이해하면 없으면 안될 거라 생각되는 중요한 개념입니다.
의존 프로퍼티는 다른 입력 값으로 속성 값을 변경해주는 용도로 사용이 되며

애니메이션, 스타일링, 데이터바인딩 등 많은 부분에서 사용되고 있습니다.

위에서 말한 다른 입력 값이란 것은 Theme, 기본설정(속성), DataBinding, Animation, 리소스 및 스타일,

부모요소에서 상속받은 속성 값 등을 말합니다.

 

 

 

 


『 명령 바인딩 』 



CommandBinding 은 명령을 구현하는 이벤트 처리기에 명령을


연결시키는 것입니다


CommandBinding 클래스에는 Command 속성과 PriviewExcuted


Excuted, PreviewCanExecute, CanExecute


이벤트가 함되어 있습니다


Command 는 CommandBinding 을 연결하는 명령이고,


PreviewExecuted와 Excuted 이벤트에 연결된


이벤트 핸들러를 실행합니다


PreviewCanExecute 와 CanExecute 이벤트는 이벤트 핸들러에서


현재 명령 대상에 대하여 실행할지 여부를 결정하게 됩니다


다음 예제로 CommanBinding 에 Excuted 와 CanExecute 이벤트를


연결하여 각각의 이벤트핸들러가 실행되는 결과를 보도록 하겠습니다


위에서 만든 프로젝트에 새로운 Window 를 추가하겠습니다


 

 

 


이제 실행을 해서 결과를 보도록 해보죠


 

 


메뉴의 "클릭" 메뉴를 클릭하게 되면 CommandBinding에 "Excuted"


로 연결시킨 이벤트 핸들러를 호출하게 됩니다


그리고 CanExcute 의 이벤트 핸들러를 보면 CanExcute 를 "True" 로


설정해 주었는데 이는 Command를 실행할 수 있도록 설정해 준 것이


만약 "False" 로 설정하였다면 메뉴바의 Command 가 실행되지 않도록


"클릭" 이란 메뉴가 비활성화 됨을 볼 수 있습니다


 

 

 



『 명령 대상 』

​명령 대상은 명령이 실행될 객체로 명령 소스에서 그 대상을 명시적으로

설정할 수 있으며 대상이 정의 되지 않은 경우에는 키보드의 포커스가

위치한 요소가 명령 대상이 됩니다 위의 예제를 생각해 본다면 명령

대상은 당연히 TextBox 가 되겠지요..! 하지만 저는 명령 소스에서 명령

대상을 따로 설정하지 않았으므로 키보드의 포커스가 TextBox에 올라

갔을때 명령 대상이 TexBox가 되는 것이지요

이렇게 명시적으로 명령 대상을 설정하지 않았을 경우에는 개발자가

명령 대상을 따로 관리하지 않고 같은 명령 소스를 사용하여 포커를 

옮겨 다니며 여러 대상에게 명령을 호출 시킬수 있는 장점이있습니다

 

 

 

 

 


 


『 명령 소스 』

명령 소스는 명령을 호출하는 개체, 다시 말해 명령을 수행하는 객체로


Menultem, Button, KeyGesture 등이 있습니다.


아래 예제를 보시면 다음과 같은 코드가 있습니다


 

 


Meny 의 Cut, Copy, Paste 명령의 명령소스로 Menultem 을 사용하는 것을


보여주고 있습니다.


일반적으로 명령소스는 CanExecuteChanged 이벤트를 수신하는데 명령을


실행 할 수 없을 경우에는 명령소스가 자체적으로 비활성화 됨을 보입니다


 

 


​#오라클자바교육센터#오라클#자바#닷넷#.net#구로오라클#구로오라클학원#WPF#WPF강좌#WPF예제#WPF강의


 

 

 

『 명령 』

WPF의 명령은 Icommand(명령의 정의) 인터페이스를 구현하여 만들어집니다

ICommand 는 Execute 와 CanExecute 라는 두가지 메서드와

CanExecuteChanged 라는 하나의 이벤트를 제공하며, Execute

는 명령과 연결된 동작을 수행하고, CanExecute는 명령을 현재 명령

대상에 대하여 실행을 할 수 있는지의 여부를 설정합니다

그리고 명령을 관리하는 명령관리자가 명령바인딩을 통해 아직 실행

되지 않은 명령을 무효화 할 수 있는 명령 소스를 변경할 경우

CanExecuteChanged 이벤트가 발생합니다.

WPF에서는 ICommand를 구현하고 요소 트리를 통해 라우트되는

명령을 정의한 RoutedCommand 클래스가 COmmandBinding을

가진 개체를 찾을때까지 요소 트리를 터널링 및 버블링 이벤트를 발생시킵니다​ 


​RoutedCommand의 Execute 메서드는 명령 대상에서 PreviewExecuted 및


Executed 이벤트를 발생시키고 CanExecute 메서드는 명령 대상에서


PreviewCanExecute 및 CanExecute 이벤트를 발생시킵니다.


이러한 이벤트는 해당 명령의 CommanBinding 을 가진요소를 찾을 떄 까지


요소 트리를 통해 터널링 및 버블링 됩니다


 

 

 

 


#오라클자바교육센터#오라클#자바#닷넷#.net#WPF#WPF강좌#WPF강의#WPF교육

 

 

 

 

『 direct 라우트된 이벤트의  EventTrigger의 결과 』 

 

 

위의 강좌의 예제코드를 실행해보도록 하겠습니다.


 

 

 


마우스 포인터가 Rectangle 위로 올라가면 "MouseEnter"


 

이벤트가 실행되어 Rentangle 의 Width 가 늘어는


 

Animation이 실행됩니다


 

 

 


Rectangle의 Width 가 늘어난 상태에서  마우스 포인터를


 

Rectangle 위에서 내리면 "MouseLeave" 이벤트가 실행되어

 


Rectamgle의 Width 가 줄어드는 Animation 이 실행됩니다

 

 

 


#오라클자바교육센터#오라클자바#오라클#자바#닷넷#.net#WPF#WPF강좌#WPF예제

 

 


 

 『 direct 라우트된 이벤트의 EventTrigger의 예제 』

 

 

이제 direct 라우트된 이벤트의 EventTrigger 의 예제를 만들어보죠

 

 

똑같이 프로젝트에서 새로운 창을 추가하는데 이번엔 이름과

 

"Direct_EventTigger.xaml" 로 만들겠습니다


 


​EventTigger의 간단한 예제로 만들어 볼 내용은 Rectangle 에 마우스

 

포인터를 올리고 내릴때 Rectangle 의 Width 를 늘리고 줄이는

 

DoublicAnimation을 시작시켜 보겠습니다

그럼 먼저 다음 코드를 작성해봅시다~

 

 

 


모든 코드 작성은 끝이 났고 잠깐 코드를 살펴보도록 하지요


 

<Window.Resources> 안을 살펴보면 <Style>에서 Rectangle의 style


 

을 정의하였고 <EventTrigger> 안에 "MouseEnter" , "MousteLeave"


 

이벤트가 발생하였을 때 실행할 Animation(Storyboard) 이


 

정의되었습니다


 

 

 

 


#오라클자바교육센터#오라클#자바#닷넷#.net#WPF#WPF강좌#WPF예제


+ Recent posts