如何为所有按钮注册单个事件侦听器

Mar*_*rek 5 c# wpf event-handling

如何在我的WPF应用程序中收听所有按钮点击.也许包括一些复选框左右,但理想情况下我不想有额外的事件处理程序.

我想收集初始统计数据,以了解人们如何使用我们的应用程序.我想确保不干涉任何其他事件处理功能.

在应用程序中,使用自己的按钮打开和关闭新窗口,因此我无法静态地执行此操作.

或者,有任何常用的方法来收集WPF应用程序的使用情况统计信息.

dsf*_*sho 6

如何在WPF应用中收听所有按钮点击?

您可以使用EventManager将事件挂接到类型的所有对象:

EventManager.RegisterClassHandler(typeof(Button), Button.ClickEvent, new RoutedEventHandler(Button_Click));

private void Button_Click(object sender, RoutedEventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)

在应用程序中,使用自己的按钮打开和关闭新窗口,因此我无法静态地执行此操作.

如果在WPF中创建这些Windows,则可以挂钩Window事件,例如Closed,Sizechanged和Got/LostFocus().如果这些Windows不是基于WPF/Winform的,您可以使用ShellHook