3

私はしばらくこれを行う方法を理解しようとしてきましたが、どこにも到達していないようです。ユーザーがスクロールを開始したときにタイマーを停止し、ユーザーが停止したときにタイマーを開始したい。Manipulation イベントを使用してみましたが、まったく発生していないようです。フックする必要があるイベントが何であるか、またはこの問題に対するより良いアプローチがあるかどうかを誰かが知っていますか?

ありがとう。

4

1 に答える 1

2

イベントは、Mapそれらをインターセプトするときに発生しません (同様の状況が Pivot コントロールでも発生します)。ユーザーが画面に触れて FreeDrag ジェスチャなどを実行したときに通知を受け取りたい場合は、Touch.FrameReportedイベントとTouchPanelを使用できます。

public MainPage()
{
    InitializeComponent();
    TouchPanel.EnabledGestures = GestureType.FreeDrag;
    Touch.FrameReported += Touch_FrameReported;
}

private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
    if (TouchPanel.IsGestureAvailable) // check only dragging 
    {
        // get point relative to Viewport
        TouchPoint mainTouch = e.GetPrimaryTouchPoint(yourMap);
        // drag started Key - down
        if (mainTouch.Action == TouchAction.Down)
           timer.Stop();

        // check if drag has completed (key up)
        if (mainTouch.Action == TouchAction.Up)
        {
            timer.Start();
            // in both cases you can use some other Properties of TouchPoint
            // do something for example dependant on coordinates 
            // double x = mainTouch.Position.X;
            // double y = mainTouch.Position.Y;
        }
    }
}

また、マップに相対的な座標があるため、ユーザーがマップの領域内で画面に触れたかどうかを確認できることにも注意してください (相対座標とマップの寸法)。

于 2014-05-07T12:48:15.373 に答える