C# 如何在<;上使用mouseDown和mouseUp;按钮/>;

C# 如何在<;上使用mouseDown和mouseUp;按钮/>;,c#,wpf,xaml,mouseevent,mediaelement,C#,Wpf,Xaml,Mouseevent,Mediaelement,我在XAML中声明了一个按钮,它具有MouseDown和MouseUp属性,这两个属性都调用指定的方法 <Button x:Name="btnBackward" Content="Backward" MouseDown="btnBackward_MouseDown" MouseUp="btnBackward_MouseReleased" Width="50" Height="25" Margin="65,400,377,45"/>

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

<Button x:Name="btnBackward" Content="Backward"
        MouseDown="btnBackward_MouseDown" 
        MouseUp="btnBackward_MouseReleased" Width="50" Height="25" 
        Margin="65,400,377,45"/>

我缺少什么?

您应该在此处使用
预览事件。因此,与其使用
MouseDown
MouseUp
,不如使用
PreviewMouseDown
PreviewMouseUp

<Button x:Name="btnBackward" Content="Backward"
        PreviewMouseDown="btnBackward_MouseDown" 
        PreviewMouseUp="btnBackward_MouseReleased"/>

理由表-

按钮抑制MouseLeftButtonDown和MouseLeftButtonDown 中按钮或其组合元素引发的冒泡事件 支持捕获鼠标并引发一个总是 由按钮本身升起。事件及其数据仍在继续 沿着路线,但由于按钮将事件数据标记为 已处理,仅事件的处理程序明确指出 应在HandledEventsTo案件中采取行动。如果其他元素 对于应用程序的根,您仍然希望有机会 处理控件抑制事件时,一种替代方法是附加 HandleEventsTo指定为true的代码中的处理程序。但通常是 更简单的方法是更改要处理的布线方向 与输入事件等效的预览例如,如果控件 抑制MouseLeftButtonDown,请尝试为其附加处理程序 改为预览鼠标左键向下

但是,如果右键单击按钮
MouseUp
MouseDown
事件将非常有效,因为在这种情况下,单击不会耗尽事件,并且它们会正确地冒泡。

请看这里
<Button x:Name="btnBackward" Content="Backward"
        PreviewMouseDown="btnBackward_MouseDown" 
        PreviewMouseUp="btnBackward_MouseReleased"/>