我试图找到我应该使用什么鼠标事件来放置 aPushpin
一次单击。我尝试过使用该MouseUp
事件,但即使我只是单击并拖动该事件也会触发。有没有办法MouseUp
只在点击而不是点击和拖动时触发?还是我应该查看另一个鼠标事件?
澄清:我正在使用 Bing Maps WPF 控件,而不是 AJAX 或 Silverlight。
我试图找到我应该使用什么鼠标事件来放置 aPushpin
一次单击。我尝试过使用该MouseUp
事件,但即使我只是单击并拖动该事件也会触发。有没有办法MouseUp
只在点击而不是点击和拖动时触发?还是我应该查看另一个鼠标事件?
澄清:我正在使用 Bing Maps WPF 控件,而不是 AJAX 或 Silverlight。
我已经设法通过处理MouseLeftButtonDown
andMouseLeftButtonUp
事件来解决这个问题。
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
。这将阻止单击拖动事件,并且您的地图将无法正确平移。