WPF 全局 eventhandler 帮助类
时间: 2023-08-08 22:09:38 浏览: 152
WPF 多窗口,multi-windows
WPF 中可以使用全局 event handler 帮助类来简化事件处理的代码。这个帮助类可以用来注册和注销全局事件处理程序,从而避免在每个控件上都编写事件处理程序。
下面是一个简单的实现:
```csharp
public static class GlobalEventHandlers
{
public static void Register<T>(DependencyObject obj, RoutedEvent routedEvent, Action<T, RoutedEventArgs> handler)
where T : UIElement
{
T element = obj as T;
if (element != null)
{
element.AddHandler(routedEvent, new RoutedEventHandler((sender, e) => handler((T)sender, e)));
}
}
public static void Unregister<T>(DependencyObject obj, RoutedEvent routedEvent, Action<T, RoutedEventArgs> handler)
where T : UIElement
{
T element = obj as T;
if (element != null)
{
element.RemoveHandler(routedEvent, new RoutedEventHandler((sender, e) => handler((T)sender, e)));
}
}
}
```
使用这个帮助类,可以在任何一个控件上注册全局事件处理程序,例如:
```csharp
GlobalEventHandlers.Register<Button>(Application.Current.MainWindow, Button.ClickEvent, (sender, e) =>
{
// 处理 Button 点击事件
});
```
这段代码将在应用程序的主窗口上注册一个全局的 Button 点击事件处理程序。同样的,可以使用 `GlobalEventHandlers.Unregister` 方法来注销全局事件处理程序。
阅读全文