如何在 上使用mouseDown和mouseUp

我有一个在XAML中声明的按钮,它具有MouseDown和MouseUp属性,它们都调用指定的方法…

但是,从不调用方法btnBackward_MouseReleased。

 private void btnBackward_MouseReleased(object sender, System.Windows.Input.MouseEventArgs e) { Console.WriteLine("mousereleased"); this.isRewinding = false; } 

我错过了什么?

您应该在此处使用Preview events 。 因此,而不是MouseDownMouseUp ,挂钩到PreviewMouseDownPreviewMouseUp

  

原因formsMSDN –

Button抑制由Button或其复合元素引发的MouseLeftButtonDown和MouseLeftButtonDown冒泡事件,以支持捕获鼠标并引发始终由Button本身引发的Click事件。 事件及其数据仍沿着路径继续,但由于Button将事件数据标记为Handled,因此仅调用特定表明它们应在handleEventsToo案例中操作的事件的处理程序。 如果针对应用程序根目录的其他元素仍然希望有机会处理控制抑制事件,则可以选择在handleEventsToo指定为true的代码中附加处理程序。 但通常一种更简单的技术是将您处理的路由方向更改为预览等效于输入事件。 例如,如果控件禁止MouseLeftButtonDown,请尝试为PreviewMouseLeftButtonDown附加处理程序

但是,如果你右键单击你的按钮MouseUpMouseDown事件将完美地工作,因为在这种情况下点击不会消耗事件并且它们正确地冒泡了。