c# - 鼠标按下事件触发两次(WPF)

标签 c# wpf onmousedown

我目前正在尝试从简单网格上的图像捕获鼠标按下。我对事件触发没有任何问题,只是它触发了两次。因为点击两次最终会出现不同的状态(它将显示展开的图像),直接点击第二次会导致问题。

我目前的代码如下:

XAML

<Window x:Class="WpfApplication.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 Background="Transparent" x:Name="MainContent" MouseDown="Generic_MouseDown">
        <Image Source="http://www.blogcdn.com/www.engadget.com/media/2011/05/welcome-kansas-city-google-high-speed-internet.jpg" Height="100" Width="100" MouseDown="Generic_MouseDown"/>
    </Grid>
</Window>

代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Generic_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (((FrameworkElement)e.Source).GetType() == typeof(System.Windows.Controls.Image))
        {
            Console.Out.WriteLine("image clicked");
        }
        else
        {
            Console.Out.WriteLine("grid clicked");
        }

    }
}

所以当我点击图片时,它会触发 mousedown 两次。

谢谢!

最佳答案

private void Generic_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (((FrameworkElement)e.Source).GetType()   
           == typeof(System.Windows.Controls.Image))
    {
        Debug.WriteLine("image clicked");
        e.Handled = true;
    }
    else
    {
        Debug.WriteLine("grid clicked");
    }

}

您需要将 Handled 属性设置为 true。

关于c# - 鼠标按下事件触发两次(WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034956/

相关文章:

c#鼠标绘图

c# - 如何编写单元测试的输出?

c# - 在 .Net 中的 Excel 文档中查找最右边的单元格

c# - Button Style 的内容只出现在一个 Button 实例中

javascript - 在 onmousedown 的 Raphael 函数中包含 labelPath

javascript - 将迭代器索引获取到 onmousedown 函数中

c# - 将空 String 反序列化为 List<string>

c# - 防止弹出窗口在单击 wpf 时关闭

c# - 为什么 ICommand 比调用 VM 的代码更好?

javascript - 如何在 JavaScript 中编写鼠标按下事件?