In Hörern für alle Elemente Ereignisse in WPF
-
10-07-2019 - |
Frage
Ich möchte für alle verfügbaren Elemente Ereignisse in einem Aufruf an Haken. Manche Dinge wie folgt:
elem.AddHandler(AnyRoutedEvent, (RoutedEventHandler)handler)
Wie kann ich das tun?
Lösung
Versuchen Sie, diese für alle Veranstaltungen auf den Button-Typ zu bekommen ... Sie können einen anderen Typ ersetzen.
RoutedEvent[] events = EventManager.GetRoutedEventsForOwner(typeof(Button));
foreach (RoutedEvent e in events)
elem.AddHandler(e, handler);
Sie können auch ersetzen die folgenden für alle Arten ALL geroutet Ereignisse zu bekommen, aber das wäre durchaus eine Liste sein!
RoutedEvent[] events = EventManager.GetRoutedEvents();
Andere Tipps
Sie können die RegisterClassHandler Methode der Eventmanager verwenden, um staticly auf alle Elemente auf einmal hören:)
EventManager.RegisterClassHandler(typeof(your class), Button.ClickEvent, new RoutedEventHandler(OnButtonClick));
static void OnButtonClick(object sender, RoutedEventArgs e)
{
//Do awesome stuff with the button click
}