Ich möchte für alle verfügbaren Element Ereignisse in einem Anruf haken. Eine Sache wie diese:Add Listener für alle Element Ereignisse in WPF
elem.AddHandler(AnyRoutedEvent, (RoutedEventHandler)handler)
Wie kann ich das tun?
Ich möchte für alle verfügbaren Element Ereignisse in einem Anruf haken. Eine Sache wie diese:Add Listener für alle Element Ereignisse in WPF
elem.AddHandler(AnyRoutedEvent, (RoutedEventHandler)handler)
Wie kann ich das tun?
Versuchen Sie dies, um alle Ereignisse auf dem Button-Typ zu erhalten ... Sie können einen anderen Typ ersetzen.
Sie können auch die folgenden ersetzen, um ALLE Routingereignisse für ALLE Typen zu erhalten, aber das wäre eine ziemliche Liste!
RoutedEvent[] events = EventManager.GetRoutedEvents();
Sie die RegisterClassHandler Methode der Eventmanager verwenden können, um staticly sofort auf alle Elemente 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
}
Ich habe diese von der Inspiration aus: 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);
}));
}
}