Mouse.MouseDown 附加事件

定义

当按下任何鼠标按钮时发生。

see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler

注解

若要确定按下的鼠标按钮,检查ChangedButton传递给处理程序的 中的 MouseButtonEventArgs 属性。

这是一个附加事件。 WPF 将附加事件实现为路由事件。 附加事件本质上是一种 XAML 语言概念,用于引用可在未定义该事件的对象上处理的事件,WPF 通过允许事件遍历路由来扩展该事件。 附加事件在代码中没有直接处理语法;若要在代码中附加路由事件的处理程序,请使用指定的 Add*Handler 方法。 有关详细信息,请参阅 附加事件概述

Windows Presentation Foundation (WPF) 框架在此附加事件的基础上构建,将它显示为两个不同的公共语言运行时, (CLR) 和 ContentElementMouseLeftButtonDownMouseRightButtonDown上的UIElement事件。 这些实现处理基础 MouseDown 事件并读取事件的参数,以确定是涉及鼠标左键还是右键。 对于三键鼠标,中心按钮没有框架级事件支持。 应使用 MouseDown 事件并检查MiddleButton事件参数中的状态。

重要

一些 ContentElement 具有类似控件的行为的派生类(例如 Hyperlink),可能对鼠标按钮事件具有固有的类处理。 鼠标左键向下事件是最有可能在控件中具有类处理的事件。 类处理通常将基础 Mouse 类事件标记为已处理。 将事件标记为已处理后,通常不会引发附加到该元素的其他实例处理程序。 通常也不会引发附加到 UI 树中根的浮升方向元素的任何其他类或实例处理程序。

可以解决上述重要说明中所述的问题,并且仍可使用以下任一解决方案在具有类处理的派生类上接收 MouseDown 鼠标左键按下事件的事件:

  • 附加 PreviewMouseDown 事件的处理程序,该事件未标记为由控件处理。 请注意,由于这是预览事件,因此路由从根开始,并向下隧道到 控件。

  • 通过调用 AddHandler 并选择允许处理程序侦听事件的签名选项,从而在控件上按过程注册处理程序,即使这些事件已在路由事件数据中标记为已处理。

对于与鼠标相关的路由事件,请小心处理它们的方式或时间。 对于是否还应向父元素告知任何给定鼠标操作做出适当选择的困难,事实上,WPF 框架选择将基础鼠标路由事件显示为沿路由 CLR 事件的模型的原因。 隧道鼠标事件也存在类似的问题。 是否应该处理事件,而不是让其他子级处理该事件,而这将如何影响合成控件(其中合成部分可能具有预期鼠标行为)?

路由事件信息

标识符字段 MouseDownEvent
路由策略 鼓 泡
委托 MouseButtonEventHandler

适用于