문제

하고 싶을 위한 걸이를 사용할 수 있는 모든 요소 이벤트 중 하나에서 호출합니다.어떤 것을 다음과 같다:

elem.AddHandler(AnyRoutedEvent, (RoutedEventHandler)handler)

이렇게 하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

버튼 유형에서 모든 이벤트를 얻으려면 이것을 시도하십시오 ... 다른 유형을 대체 할 수 있습니다.

RoutedEvent[] events = EventManager.GetRoutedEventsForOwner(typeof(Button));

foreach (RoutedEvent e in events)
   elem.AddHandler(e, handler);

또한 다음을 대체하여 모든 유형에 대해 모든 라우팅 이벤트를 얻을 수 있지만 이는 상당히 목록입니다!

RoutedEvent[] events = EventManager.GetRoutedEvents();

다른 팁

사용할 수 있습니다 RegisterClassHandler 방법의 매니저를 staticly 들어 모든 요소에 한 번)

EventManager.RegisterClassHandler(typeof(your class), Button.ClickEvent, new RoutedEventHandler(OnButtonClick));

static void OnButtonClick(object sender, RoutedEventArgs e)
{
    //Do awesome stuff with the button click
}

나는 이것을 영감으로 만들었습니다.http://geekswithblogs.net/tkokke/archive/2009/07/17/monitoring-routed-events-in-wpf.aspx

    /// <summary>
    /// This is used for debugging, when your looking for a specific event
    /// </summary>
    public static void RegisterAllEvents(Type type, FrameworkElement target)
    {
        var events = EventManager.GetRoutedEvents();
        foreach (var routedEvent in events)
        {
            EventManager.RegisterClassHandler(type,
                                routedEvent, new RoutedEventHandler((sender, args) =>
                {
                    if ( sender != target)
                        return;
                    System.Diagnostics.Debug.WriteLine(args.OriginalSource + "=>" + args.RoutedEvent);
                }));
        }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top