2012-01-15 5 views
6

説明されている基本的なシナリオの場合in the msdn overview (under Touch and Manipulation)対応するTouchDownおよびTouchUpごとにTouchEnterおよびTouchLeaveがそれぞれ起動されます。マウスとは異なり、タッチとスタイラスは画面との接触を維持するように制約されません。TouchUpとTouchUpを区別する戦略とTouchEnterからのTouchDown?

TouchEnterとTouchLeaveを使用する方法は、指がの場合にのみキャプチャし、をUIElementにドラッグすることです。これらのイベントはすべてのtouchUpとtouchDownで起動されるため、これらのイベントを区別する最善の方法は何ですか?

単一の指の場合に有効な戦略の1つは、TouchDownにフラグを設定し、TouchUpにフラグが設定されているかどうかを確認することです。これにより、TouchUpの状態チェックが可能になります。しかし、複数の指では実現不可能である。

PreviewTouchEnterイベントとPreviewTouchLeaveイベントは発生せず、PreviewTouchDownとPreviewTouchUpだけが発生します。指のための一連のイベントがUIElementの上へ低下し、それの上に上げ、次のとおりです。

  1. するTouchEnter
  2. PreviewTouchDown
  3. タッチダウン
  4. PreviewTouchUp
  5. TouchUpの
  6. するTouchLeave

この配列は、Touc UIElement上に直接ドロップされた指からUIElementにドラッグされた指のために起こったことです。私は何かを見逃しているのでしょうか?フレームワークはそのような差別化をサポートしていませんか?

答えて

0

TouchDeviceクラスを使用して、どのような接触が生成されたかを把握できますか。新しいタッチには新しいIDが与えられているので、既存のタッチと新しいタッチを区別でき、どの要素がデバイスをキャプチャしているかを区別できます。私は、操作事象と正常なプロセスを回避すると思いますが、それが助けてくれることを願っています。あなたがイベントのTouchPointを取得した場合

0

、それはそれはDownMoveまたはUpイベントであるかどうかを示しますActionという名前のプロパティがあります。

void m_element_TouchEnter(object sender, System.Windows.Input.TouchEventArgs e) 
{ 
    var touchPoint = e.GetTouchPoint(m_someElement); 

    if (touchPoint.Action == System.Windows.Input.TouchAction.Move) 
    { 
     //This is a "true" TouchEnter event 
    } 
    else if (touchPoint.Action == System.Windows.Input.TouchAction.Down) 
    { 
     //This is a "true" TouchDown event. 
    } 
} 
関連する問題