1

我试图了解如何在 WPF 中生成与 UI 相关的 RoutedEvents。

例如,在控件上按下鼠标左键如何启动隧道PreviewMouseDown

我自己找不到明确的答案。我的直觉是窗口接收到的消息(例如WM_MOUSEFIRST)被处理并因此引发事件,但这只是我的猜测。

4

1 回答 1

1

最终它必须WM_MOUSEFIRST和类似的 Windows 事件触发 WPF 中的操作。毫无疑问。这就是Windows的工作方式。

在 WPF 内部,它使用EventManagerGlobalEventManager处理事件。AWindow和所有后续的基类在EventManager(likeWindowFrameworkElementhere)注册自己。

处理实际事件并EventManager负责路由。

实际的鼠标事件由自身处理HwndMouseInputProvider,一些Window事件由Window 自身处理。

于 2015-02-25T10:22:58.560 回答