鼠标事件在WPF中如何工作?

WPF控件如何知道鼠标事件与它相关,以便它可以提升其鼠标事件。

例如,Button控件如何知道捕获MouseDown和MouseUp事件并将其转换为click事件。

Windows使用Messaging模型向GUI元素通知正在发生的事情。 Windows将这些消息放入消息队列中,每个窗口都不断检查此队列以查看存在的消息。 这通常称为消息循环。 然后,窗口负责获取发往其自身的消息,并执行必要的操作(例如引发用户代码响应的事件)。 我建议阅读此内容以了解有关消息循环和消息的更多信息。

在WinForms中,每个控件都是自己的窗口,因此每个控件都有自己的消息队列。 WPF不是这种情况。 WPF以不同的方式处理这种情况,因为WPF将整个窗口视为单个项目,在运行时组成必要的元素。 我建议阅读本文以了解有关WPF如何处理这种情况的更多信息。

除了我在这里列出的那些之外,还有许多其他资源,如果你只是搜索Windows消息,Windows消息循环并将WPF投入混合。