2016-07-11 16 views
0

と私はPointerWheelChangedイベント(マウスやタッチパッドからの水平スクロールを処理するため)にManipulationDeltaまたはManipulationUpdatedManipulationCompletedを扱いたいUWPアプリケーションを、持っています。 PointerwheelChangedイベントでプロセスPointerWheelChangedイベントはGestureRecognizer

、私はePointerRoutedEventArgsある

gesture.ProcessMouseWheelEvent(e.GetCurrentPoint(this), false,false); 

でこれを管理しています。

コードスニペット:

GestureRecognizer gesture = new GestureRecognizer(); 
gesture.ManipulationCompleted += OnManipulationCompleted; 
gesture.ManipulationUpdated += OnManipulationUpdated; 

void OnManipulationUpdated(object sender, ManipulationUpdatedEventArgs e) 
{ 
//Ideally this Should be called whenever there is a change in manipulation 
} 

void OnManipulationCompleted(object sender, ManipulationCompletedEventArgs e) 
    { 
    //Code for Scroll 
//Ideally this has to be called on completion of Manipulation Event(Correct me if am wrong) 
    } 


private void onPointerwheelChanged(object sender, PointerRoutedEventArgs e) 
{ 
gesture.ProcessMouseWheelEvent(e.GetIntermediatePoints((this) sender)[0], false, false); 
} 

onPointerwheelChangedイベントが発生するたびに、このアプローチの問題は、ManipulationCompletedはあまりにも(指がタッチパッド全体に接触していた自分がタッチパッドに単一の長いスライドを実行するにもかかわらず、解雇されますスライドを通して)。

1つのロングスライドの最後で、1つのManipulationCompletedイベントがトリガーされるのが理想的です。しかし、複数のManipulationCompletedイベントがトリガーされています。

この問題を避ける方法はありますか? GestureRecognizerに火をつけるManipulationCompletedスライドの最後にイベントがありますか? onPointerwheelChangedイベントが発生するたびに

+0

こんにちは!優れた質問。具体的に何が起こっているかを見ることができるように、あなたのコードを含めてください。私たちはそれなしではデバッグできません。ありがとう –

+0

あなたの質問にあなたのコードを追加する必要があります。あなたは、人々が –

+0

更新のポストに答えるという質問をする方法の詳細情報が必要な場合はhttp://stackoverflow.com/help/how-to-askを参照してください! – Highbrow

答えて

0

ManipulationCompletedはあまりにも

それは予想される動作である

を解雇されます。 PointerWheelChanged eventによると:ポインタイベントが発生した要素が非デフォルトManipulationMode値を持つ場合

は、アクションもManipulationStartedのような様々な操作イベントが発生する場合があります。

hereを説明するこの現象の理由:

マウスのホイールボタンを有する離散、等間隔ノッチまたは距離閾値(別名戻り止め)。ホイールを回転または傾けると、各ディテントに遭遇するたびにホイールメッセージが送信されます。

したがって、ユーザーがマウスホイールの回転を終了したときに何かを処理したい場合。以下のいずれかのオプションに従うことをお勧めします。

  1. イベントのデータ(グリッドの位置など)を表示する場合は、 ManipulationCompletedイベントがトリガーされるたびに更新してください。したがって、ユーザはリアルタイムデータを見ることになる。

  2. 境界点の状態を設定できます(例:bool gridHitBoundary=false)。 OnManipulationUpdatedでは、境界ポイントがヒットしたときの状態を更新し、gridHitBoundary==trueのときはManipulationCompletedのロジックを実行します。

+0

私はワナが無限スクロールを実装しているので、境界がない!とにかく.. d感謝! – Highbrow

関連する問題