wpf Button.MouseLeftButtonDown 根本不起作用

本文关键字:不起作用 MouseLeftButtonDown Button wpf | 更新日期: 2023-09-27 17:56:05

我试图学习MouseLeftButtonDown是如何工作的,但直到现在还没有秒。

当我点击按钮时,没有任何嘶吼。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel Name="sss">
            <Button x:Name="b1" Height="213" MouseLeftButtonDown="sss_MouseDown"/>
        </StackPanel>
    </Grid>
</Window>

隐藏的代码是:

private void sss_MouseDown(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("3   ->>>>>" + ((Control)sender).Name);
        }

wpf Button.MouseLeftButtonDown 根本不起作用

尝试简单的PreviewMouseLeftButtonDown事件

来自有关此事件的文档:

某些控件类可能具有鼠标按钮事件的固有类处理。鼠标左键按下事件是控件中最有可能具有类处理的事件。类处理通常将基础 Mouse 类事件标记为已处理。将事件标记为已处理后,通常不会引发附加到该元素的其他实例处理程序。通常也不会引发附加到 UI 树中根冒泡方向的元素的任何其他类或实例处理程序。

简而言之:按钮可能正在处理此事件,以便生成自己的MouseDownMouseClick事件。由于按钮将事件标记为已处理,因此不会调用你自己的处理程序。请尝试改用更标准的事件之一。

该页面还列出了一些解决方法,但通常我会避开这些解决方法并使用更标准的解决方案。

我遇到了同样的问题,但改用了PreviewMouseLeftButtonDown事件。这奏效了。