[WPF] 라우티드 이벤트(Routed Event) 이해하기

title-gonggo.png

[WPF] 라우티드 이벤트(Routed Event) 이해하기

주성돈기자

라우티드 이벤트란?

엘리먼트 트리 구조에서 잘 동작하도록 설계된 이벤트

라우티드 이벤트 사용 이유 (장점)

라우티드 이벤트가 발생하면 특정 코드가 없어도 간편하고
일관성 있게 비주얼/로지컬 트리 상의 각 엘리먼트마다 이벤트를 일으키면서 위아래로 이동할 수 있다.

라우티드 이벤트 전략 종류

1. 터널링

루트 엘리먼트에 있는 이벤트가 먼저 일어나고 이후 자식 엘리먼트의 이벤트가 차례대로 일어난다.

2. 버블링

소스 엘리먼트에서 먼저 일어나고, 이후 부모 엘리먼트의 이벤트가 차례대로 일어난다.

3. 다이렉트

소스 엘리먼트에서 한 번만 일어난다.

구현 예시

1. 라우티드 이벤트 등록

   publicstaticreadonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent("Click",
        RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Button));
   

EventManager.RegisterRoutedEvent 아규먼트 해석
라우티드 이벤트 이름 : "Click"
라우팅 전략 : Bubble
핸들러 타입 : RoutedEventHandler
라우티드 이벤트를 사용하는 클래스 타입 : Button

2. 이벤트 래퍼 등록 (선택사항)

System.Windows.UIElement에서 상속받은 AddHandler, RemoveHandler 메서드를 사용한다.

   publicevent RoutedEventHandler Click
{
    add { AddHandler {Button.ClickEvent, value); }
    remove {RemoveHandler {Button.ClickEvent, value); }
}
   

3. 이벤트 발생

   protectedoverridevoidOnMouseLeftButtonDown(MouseButtonEventArgs e)
{
    //이벤트 발생
    RaiseEvent(new RoutedEventArgs(Button.ClickEvent, this));
}
   

RaiseEvent에 라우티드 이벤트 아규먼트를 넘겨준다.
라우티드 이벤트 아규먼트를 생성할 때는 이벤트를 일으키기 위해 알맞은 변수를 넣어준다.

0 Comments

최근글


새댓글


Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand