单击即可放置图钉

时间:2012-07-19 13:02:03

标签: c# wpf wpf-controls bing-maps

我正在尝试找一下我应该用什么鼠标事件来点击Pushpin。我尝试过使用MouseUp事件但即使我点击并拖动也会触发该事件。有没有办法让MouseUp仅针对点击而不是点击并拖动?或者是否有另一个我应该关注的鼠标事件?

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

1 个答案:

答案 0 :(得分:0)

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

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。这将阻止点击拖动事件,您的地图将无法正常平移。