2012-07-19 75 views
0

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

说明:我正在使用Bing地图WPF控件,而不是AJAX或Silverlight。

+0

有一个计时器,每次移动鼠标时都会运行。然后,当计时器结束时,接受MouseUp事件。 – 2012-07-19 13:04:35

回答

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