Share via


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

适用于