我试图了解如何在 WPF 中生成与 UI 相关的 RoutedEvents。
例如,在控件上按下鼠标左键如何启动隧道PreviewMouseDown
?
我自己找不到明确的答案。我的直觉是窗口接收到的消息(例如WM_MOUSEFIRST
)被处理并因此引发事件,但这只是我的猜测。
我试图了解如何在 WPF 中生成与 UI 相关的 RoutedEvents。
例如,在控件上按下鼠标左键如何启动隧道PreviewMouseDown
?
我自己找不到明确的答案。我的直觉是窗口接收到的消息(例如WM_MOUSEFIRST
)被处理并因此引发事件,但这只是我的猜测。
最终它必须是WM_MOUSEFIRST
和类似的 Windows 事件触发 WPF 中的操作。毫无疑问。这就是Windows的工作方式。
在 WPF 内部,它使用EventManager
和GlobalEventManager
处理事件。AWindow
和所有后续的基类在EventManager
(likeWindow
和FrameworkElement
here)注册自己。
处理实际事件并EventManager
负责路由。
实际的鼠标事件由自身处理HwndMouseInputProvider
,一些Window
事件由Window
自身处理。