wpf Button.MouseLeftButtonDown根本不起作用

时间:2014-04-02 13:50:28

标签: c# wpf mouseleftbuttondown

我试图了解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);
        }

3 个答案:

答案 0 :(得分:14)

尝试简单的PreviewMouseLeftButtonDown事件

答案 1 :(得分:8)

来自documentation on this event

  

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

简而言之:该按钮可能会处理此事件,以便生成自己的MouseDownMouseClick事件。因为按钮将事件标记为已处理,所以您自己的处理程序不会被调用。请尝试使用其中一个更标准的事件。

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

答案 2 :(得分:3)

我遇到了同样的问题但是使用的是PreviewMouseLeftButtonDown事件。这很有用。