Pushpin
ワンクリックで配置するために使用するマウスイベントを見つけようとしています。イベントを使用してみましMouseUp
たが、クリック アンド ドラッグしただけでもイベントが発生します。MouseUp
クリックアンドドラッグではなく、クリックのみで発火させる方法はありますか? または、私が見るべき別のマウスイベントがありますか?
明確化: AJAX や Silverlight ではなく、Bing Maps WPF コントロールを使用しています。
Pushpin
ワンクリックで配置するために使用するマウスイベントを見つけようとしています。イベントを使用してみましMouseUp
たが、クリック アンド ドラッグしただけでもイベントが発生します。MouseUp
クリックアンドドラッグではなく、クリックのみで発火させる方法はありますか? または、私が見るべき別のマウスイベントがありますか?
明確化: AJAX や Silverlight ではなく、Bing Maps WPF コントロールを使用しています。
MouseLeftButtonDown
とMouseLeftButtonUp
イベントを処理することで、これを一緒にハックすることができました。
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
。これにより、クリック アンド ドラッグ イベントが妨げられ、マップが適切にパンされなくなります。