C# WPF RoutedCommand/RoutedEvent引发事件的人员/原因?
我试图理解WPF是如何实现路由命令的,这些命令在内部是由路由事件实现的。在C# WPF RoutedCommand/RoutedEvent引发事件的人员/原因?,c#,wpf,routed-events,routed-commands,C#,Wpf,Routed Events,Routed Commands,我试图理解WPF是如何实现路由命令的,这些命令在内部是由路由事件实现的。在UIElement类定义中,我们可以找到这段代码: EventManager.RegisterClassHandler(type, CommandDevice.CommandDeviceEvent, new CommandDeviceEventHandler(UIElement.OnCommandDeviceThunk), false); 从那时起,UIElement.OnCommandDeviceThunk处
UIElement
类定义中,我们可以找到这段代码:
EventManager.RegisterClassHandler(type, CommandDevice.CommandDeviceEvent, new
CommandDeviceEventHandler(UIElement.OnCommandDeviceThunk), false);
从那时起,UIElement.OnCommandDeviceThunk
处理程序将通过它在其体内调用的函数的参数传递所有信息,这些函数本身也会这样做,直到它到达我们订阅的CommandBinding.Executed
事件,从而执行我们的响应代码
我似乎找不到并且想了解的是,谁提出了CommandDevice.CommandDeviceEvent
例如,当我将按钮库
子类对象的命令
属性链接到ApplicationCommands命令时,它是否以某种方式引发了CommandDeviceEvent
,它是如何做到的
我知道GlobalEventManager
拥有大量事件处理程序列表,但我还不知道是谁引发事件来触发这些处理程序
例如,当我将按钮库
子类对象的命令
属性链接到ApplicationCommands命令时,它是否以某种方式引发了CommandDeviceEvent
,它是如何做到的
ButtonBase
类在单击内部CommandHelpers
类时调用该类的ExecuteCommandSource
方法:
然后,此方法执行实际命令,即ICommand
属性返回的对象:
例如,当我将按钮库
子类对象的命令
属性链接到ApplicationCommands命令时,它是否以某种方式引发了CommandDeviceEvent
,它是如何做到的
ButtonBase
类在单击内部CommandHelpers
类时调用该类的ExecuteCommandSource
方法:
然后,此方法执行实际命令,即ICommand
属性返回的对象: