11

我正在尝试了解 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);
        }
4

3 回答 3

21

尝试简单的PreviewMouseLeftButtonDown事件

于 2014-04-02T13:59:59.900 回答
9

有关此事件的文档中

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

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

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

于 2014-04-02T13:59:04.123 回答
7

我遇到了同样的问题,但改用了 PreviewMouseLeftButtonDown 事件。那行得通。

于 2016-06-22T09:11:34.210 回答