0

我试图找到我应该使用什么鼠标事件来放置 aPushpin一次单击。我尝试过使用该MouseUp事件,但即使我只是单击并拖动该事件也会触发。有没有办法MouseUp只在点击而不是点击和拖动时触发?还是我应该查看另一个鼠标事件?

澄清:我正在使用 Bing Maps WPF 控件,而不是 AJAX 或 Silverlight。

4

1 回答 1

0

我已经设法通过处理MouseLeftButtonDownandMouseLeftButtonUp事件来解决这个问题。

private void map_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    clickTimer.Start();
}

private void map_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    clickTimer.Stop();

    if (clickTimer.ElapsedMilliseconds < arbitraryConstant) // I find that 100 works well
    {
        Point mousePosition = e.GetPosition(this);
        Location pinLocation = map.ViewportPointToLocation(mousePosition);

        targetPin.Location = pinLocation;

        map.Children.Add(targetPin);
    }

    clickTimer.Reset();
}

一个Stopwatch对象记录单击向下和释放单击之间经过的时间。该经过的时间被评估并确定它是否是“点击”。

警告:请记住调用clickTimer.Reset(),否则您的Stopwatch对象将继续增量记录点击,只有您的第一次点击(如果您没有先点击拖动)会触发if块。

警告:不要设置e.Handled=true。这将阻止单击拖动事件,并且您的地图将无法正确平移。

于 2012-07-19T15:31:14.180 回答