我想了解WPF如何实现路由命令,这在内部是由路由事件实现的。在UIElement
类的定义,我们发现这段代码:WPF RoutedCommand/RoutedEvent谁/什么引发了这个事件?
EventManager.RegisterClassHandler(type, CommandDevice.CommandDeviceEvent, new
CommandDeviceEventHandler(UIElement.OnCommandDeviceThunk), false);
从那里,该UIElement.OnCommandDeviceThunk
处理程序将通过功能在其身上调用其本身做同样的,直到它到达参数沿着所有的信息传递我们订阅的CommandBinding.Executed
事件,从而执行我们的响应代码。
我似乎无法找到并希望了解的是谁提出CommandDevice.CommandDeviceEvent
?
例如,当我将ButtonBase
子类对象的Command
属性链接到ApplicationCommands命令时,它是否以某种方式引发CommandDeviceEvent
,它是如何实现的?
我明白GlobalEventManager
拥有事件处理程序列表的分数,但我还没有理解谁引发事件来触发这些处理程序?