WPF:图像点击事件

时间:2010-04-15 15:59:43

标签: wpf mouseevent

我只能在WPF中的图像上找到MouseDown事件和MouseUp事件。 如果我在某些图像上执行MouseDown,则会导致一些问题,移动鼠标并在其他图像上发生MouseUp事件。 是否有任何其他事件可用于解决此问题。像ButtonClick元素的MouseClick事件。

2 个答案:

答案 0 :(得分:10)

如果你真的必须使用图像,那么你可以做几件事来检查“点击”。

  1. 检查两个事件之间的时间。如果它低于您的阈值,则将鼠标视为单击。您需要存储鼠标按下事件的时间。

  2. 检查两个事件的sender是否相同。同样,您需要存储鼠标按下事件的sender

  3. 您可能还想检查它是按下并释放的左按钮。

    结合两者:

        private DateTime downTime;
        private object downSender;
    
        private void Image_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                this.downSender = sender;
                this.downTime = DateTime.Now;
            }
        }
    
        private void Image_MouseUp(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Released &&
                sender == this.downSender)
            {
                TimeSpan timeSinceDown = DateTime.Now - this.downTime;
                if (timeSinceDown.TotalMilliseconds < 500)
                {
                    // Do click
                }
            }
        }
    

    实际上你可以做第三件事:检查鼠标位置。

        private Point downPosition;
    

    保存位置:

        this.downPosition = e.GetPosition(sender as Image);
    

    然后再次使用公差值在MouseUp事件中进行检查。

答案 1 :(得分:5)

您确定只想要一张图片,或者您是否真的想要一张带有图片内容的按钮?带图像的按钮将具有点击事件。