『 라우팅 전략 예제 』


다음으로 코드비하인드 페이제에서 코드를 작성할 텐데 버튼의 

이벤트 핸들러를 작성하고 Path가 클릭되었을 때의 이벤트

핸들러를 작성하겠습니다.

그 전에 위에서 말했듯이 하위요소에서 이벤트가 발생하여 상위

요소로 버블링 되는 알아 보자고 했었던것 처럼

상위요소인 Window Level 에 이벤트를 등록하겠습니다.

Window의 이름이 위 XAML 에서 보듯이 "WindowBubbling"

으로 되어있기에 코드 비하인드 페이지에서 다음같이 코드작성!

 

 


이때 "TAB" 키를 두번 누르면 자동으로 아래처럼


이벤트에 대한 코드가 생성되게 될 것 입니다.


 

 


나중에 이 이벤트 핸들러에 메시지 박스를 띄워 이벤트가 실행


되는지 확인할 것입니다.


그럼 아래코드를 작성해 프로그램을 완성합니다.


 

 




위으 코드는 단순히 마우스 입력으로 클릭에 대한 이벤트가


발생하였을 때 버튼에서 이벤트를 처음 받게 되는지 , 아니면


Path 에서 이벤트를 받게 된 건지에 대해 단순히 ListBox에


보여주게 하려 한 것이며 , 이때 버튼에서 마우스오른쪽을


클릭해서 Window Level 의 이벤트 핸들러가 하위요소에서


발생된 Bubbling 에 의해 실행이 되는지를 MessageBox를


통해 보려 한 것입니다. 그럼 실행해 옮겨보죠!!


 


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


 

 


『 라우팅 전략 예제 』

​Window 에 이벤트 핸들러를 등록시킨 후 하위 요소에서

이벤트가 발생하면 제일 상위 Window 까지 이벤트가

버블링 되는지를 확인해 보도록 하겠습니다.

 

위와 같이 XAML 코드를 작성하면 디자인은 끝이 났고


귀여운 팩맨 그림과 팩맨버튼이란 글씨가 있는 버튼,


검정색 Background 가 있는 LIstBox 가 보여지게 될것입니다


 


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

 

 


 

『 라우팅 전략 예제


VisualStudo 2008 을 열어 "ReutedEventTest" 라는

이름으로 새 프로젝트를 생성하겠습니다.

다음으로 "Window1.xaml" 파일의 이름을 "Bubbling.xaml" 로

변경하겠습니다. 그리고 아래의 코드를 작성하겠습니다

지금 만들어보고자 하는 예제는 버튼이 자식요소로 Grid를

가지고 있고 Grid 의 자식요소로 Canvas 를 가지고 있고


Canvas 의 자식요소로 Path 를 가지고 있는


구조에서 Path 를 클릭했을 때와 Path 이외의 버튼은


아른 영역을 클랙했을 때 각각 어떻게 이벤트가 발생하는지


알아보도록 하겠습니다.


 


​#오리클자바교육센터#오라클#자바#닷넷#.net#WPF#WPF강의#WPF예제#WPF자료

 

 

『 라우팅 전략 』

 

 

<직접(direct)>

 

이벤트에 응답하여 처리기를 호출할 수 있는 기회가

 

이벤트를 받은 요소 자체에만 부여됩니다.

 

이는 Windows Forms 의 이벤트 "라우팅" 방법과

 

비슷합니다. 하지만 표준 CLR 이벤트와 달리 직접

 

라우트된 이벤트는 클래스 처리를 지원하며

 

EventSetter 및 EventTrigger 에서 사용할수 있습니다

 

이제 라우트된 이벤트에 대해서 대략적으로 이해가

 

되실것 같습니다. 사실 이러한 개념은 WPF 에서

 

처음 소개되는 개념은 아닙니다. 기존에 Web Form(ASP.NET)

 

을 개발하신 경험이 있으시다면 버블링이나 터널링 기능을

 

사용해보셨을 것입니다. ♡

 

 

 

 

 

『 라우팅 전략 』

 

 

 

라우트된 이벤트는 다음과 같은 세가지

 

 

라우팅 전략 중 하나를 사용합니다

 

 

<버블링(bubbling)>

 

이벤트를 받은 자식요소의 이벤트 처리가가 호출됩니다

 

그런 다음 라우트된 이벤트가 요소 트리의 제일

 

 

상위요소에 도달할 때까지 이후 부모 요소에 라우팅합니다

 

 

대부분의 라우트된 이벤트는 버블링 라우팅 전략을

 

 

사용합니다. 버블링 라우트된 이벤트는 일반적으로

 

 

특정 컨트롤 또는 기타 UI 요소의 입력 또는 상태 변경

 

 

을보고하는데 사용합니다.

 

 

<터널링(tunneling)>

 

처음에 요소 트리의 최상위 요소의 이벤트 처리기가

 

 

호출됩니다. 그다음 라우트된 이벤트가 자식요소를 따라

 

 

라우트된 이벤트 소스(라우트된 이벤트를 발생시킨요소)

 

 

인 하위 자식요소를 향해 라우팅 합니다.

 

 

터널링 라우트된 이벤트는 일반적으로 컨트롤 합성에

 

 

사용하거나 그 일부로 처리되어 합성 파트에서 온 이벤트는

 

 

의도적으로 표시하지 않거나  전체 컨트롤에 고유한

 

이벤트로 대체됩니다. WPF 에서 제공하는 입력 이벤트는

 

 

대게 터널링/버블링 쌍으로 구현되어 있습니다.

 

 

터널링/버블링 쌍에 사용되는 명명 규칙 때문에

 

 

터널링 이벤트를 미리 보기 이벤트라고 합니다.

 

 

 

 

 

 

 

 

 

 

『 ScrollViewer

ScrollViewer 에 대한 예제를 하나 만들어 보죠

 

 

위 프로젝트에 "ScrollViewer" 라는 창을 추가합니다.

 

 

 

 

그리고 ScrollViewer 의 자식요소로 Rectangle 을

 

 

 

몇가지 추가하겠습니다

 

 

 


​App.xaml 를 수정후 실행 해보겠습니다.


 

 

 


처음 실행 되었을 때는 ScrollViewer 자식요소인


Rectangle 이 창의 크기보다 크므로 창 우측에 세로


스크롤 바가 생긴 것 볼 수 있습니다. 이 스트롤 바를 이용


하여 보이지 않는 콘텐츠를 확인 할 수 있습니다.


 


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

'닷넷 > Wpf프로그래밍' 카테고리의 다른 글

WPF 강좌예제 / 라우팅 전략  (0) 2015.10.22
WPF 강좌예제 / 라우팅 전략  (0) 2015.10.22
WPF 강좌예제 / ScrollViewer  (0) 2015.10.20
WPF 강좌예제 / ViewBox  (0) 2015.10.19
WPF 강좌예제 / Panel.ZIndex(3)  (0) 2015.10.19

 


 

 ScrollViewer 』

 

 

 

​ScrollViewer 는 아마 많이 사용 하셨던 컨트롤이 아닌가

 

 

 

하는 생각이 듭니다. ScrollViewer 컨트롤 영역 안의 콘텐츠가

 

 

 

그 크기를 넘어선 경우 스크롤을 이용하여 모든 콘텐츠를

 

 

 

표시해주는 컨트롤 입니다.​

 

 

 

Sc​rollViewer 역시 ViewBox 와 마찬가지로 단 하나만의

 

 

 

자식요소를 갖게 됩니다. 하지만 여러 콘텐츠를

 

 

 

보여줘야 할 경우에는 ScrollViewer 영역 안에

 

 

여러 콘텐체를 Panel 로 감싸야합니다.


 


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

'닷넷 > Wpf프로그래밍' 카테고리의 다른 글

WPF 강좌예제 / 라우팅 전략  (0) 2015.10.22
WPF 강좌예제 / ScrollViewer  (0) 2015.10.20
WPF 강좌예제 / ViewBox  (0) 2015.10.19
WPF 강좌예제 / Panel.ZIndex(3)  (0) 2015.10.19
WPF 강좌예제 / Panel.ZIndex(2)  (0) 2015.10.19

 

 

『  ViewBox 』

​Viewbox 는 자신요소를 늘리거나 확대하여 가용한 공간을

자동으로 채우는 크기조절 기능을 제공합니다.

그럼 예제를 만들어 Viewbox 안에 컨텐츠의 크기 조절을

어떻게 설정하는지를 설명하겠습니다.

먼저 VS2008을 실행시켜 "etcLayout" 라는 프로젝트를

생성하겠습니다.

그럼 다음 아래 그림에서 와 같이 Window1 을 삭제합니다

 

 

 


다음으로 아래 그림과 같이 프로젝트에 새 창(Window) 를 추가

 

 

 

 

 

그런 다음 새창의 이름을 "ViewBox" 라고 생성합니다


 

 

 

이제 "ViewBox.xaml"이 생겼지요?


다음으로 "ViewBox.xaml" 에서 <Grid> </Grid> 를 삭제하고


그 부분에 <Viewbox> </Viewbox> 코드를 입력해


Viewbox 컨트롤을 추가하겠습니다.


 

 

 

Stretch 속성


None : 아무것도 하지 않음

 

Fill : 가득 채움

 

Uniform : 영역내에서 형태를 유지함

 

UniformToFill : 화면에 꽉 차도록 하고 나오는 부분을 자름

 


 


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

 

'닷넷 > Wpf프로그래밍' 카테고리의 다른 글

WPF 강좌예제 / ScrollViewer  (0) 2015.10.20
WPF 강좌예제 / ScrollViewer  (0) 2015.10.20
WPF 강좌예제 / Panel.ZIndex(3)  (0) 2015.10.19
WPF 강좌예제 / Panel.ZIndex(2)  (0) 2015.10.19
WPF 강좌예제 / Panel.ZIndex  (0) 2015.10.19

+ Recent posts