Routed Events

Routed Events

라우팅 된 이벤트는 라우팅 전략에 따르는 Visual tree를 위 또는 아래로 탐색하는 이벤트이다. 라우팅 전략은 bubble, tunnel, direct가 있다. 당신은 이벤트가 발생되는 엘리먼트이거나 Button.Click="Button_Click" 문법과 같이 첨부된 이벤트를 사용하여 위 또는 아래의 다른 엘리먼트에 이벤트 핸들러를 연결할 수 있다.

라우팅된 이벤트는 일반적으로 쌍을 이룬다. 첫번째는 PreviewMouseDown이라 불리는 터널링 이벤트이고, 두번재는 MouseDown이라 불리는 버블링이다. 이벤트 핸들러에 접근하면 라우팅을 멈추지 않는다. e.Handled = true;라 설정할 때 라우팅을 멈춘다.

  • 터널링 이벤트 (Tunneling Event)는 최상위 엘리먼트에서 발생되고 소스 엘리먼트에 접근하거나 터널링이 이벤트가 처리된 것으로 표시하여 멈출때까지 visual tree를 아래로 탐색한다. 이름 규칙은 Preview라 불리고 버블이벤트 응답전에 나타난다.

  • 버블링 이벤트 (Bubbling Event)는 소스 엘리먼트에서 발생되고 최상위 엘리먼트에 접근하거나 버블링이 이벤트가 처리된 것으로 표시하여 멈출때까지 visual tree를 위로 탐색한다. 버블링 이벤트는 터널링 이벤트 후에 발생된다.

  • 다이렉트 이벤트 (Direct Event)는 소스 엘리먼트에서 발생되고 반드시 소스 엘리먼트에서 처리되어야 한다. 이 행동은 일반 .NET 이벤트와 같다.

How to Create a Custom Routed Event (라우팅된 이벤트를 만드는 방법)

// Register the routed event
public static readonly RoutedEvent SelectedEvent = 
    EventManager.RegisterRoutedEvent( "Selected", RoutingStrategy.Bubble, 
    typeof(RoutedEventHandler), typeof(MyCustomControl));

// .NET wrapper
public event RoutedEventHandler Selected
{
    add { AddHandler(SelectedEvent, value); } 
    remove { RemoveHandler(SelectedEvent, value); }
}

// Raise the routed event "selected"
RaiseEvent(new RoutedEventArgs(MyCustomControl.SelectedEvent));

results matching ""

    No results matching ""