0

Pushpinワンクリックで配置するために使用するマウスイベントを見つけようとしています。イベントを使用してみましMouseUpたが、クリック アンド ドラッグしただけでもイベントが発生します。MouseUpクリックアンドドラッグではなく、クリックのみで発火させる方法はありますか? または、私が見るべき別のマウスイベントがありますか?

明確化: AJAX や Silverlight ではなく、Bing Maps WPF コントロールを使用しています。

4

1 に答える 1

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。これにより、クリック アンド ドラッグ イベントが妨げられ、マップが適切にパンされなくなります。

于 2012-07-19T15:31:14.180 に答える