2012-01-25 19 views
1

私は、WPFアプリケーションでTouchDownの座標を取得し、このタッチの下にあるUI要素を見つける方法があると確信しています。誰も助けることができますか?タッチ座標でUI要素を取得する

+0

なぜこの要素の下にあるUI要素を知りたいのですか?それを操作から除外する必要がありますか? いつ必要ですか?操作デルタで? – simo

+0

私は、ページスワイプ操作から自分のボタンを除外する方法を解明しようとしてきました。 * sigh *ここをクリックしてください:http://goo.gl/pCdVSr – Jordan

答えて

0

ビジュアルツリーに対してhit testを実行する必要があります。ここで

は、マウスクリックで一例である(ただし、タッチは、この点で多かれ少なかれ同じものである):HitTest

// Respond to the left mouse button down event by initiating the hit test. 
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    // Retrieve the coordinate of the mouse position. 
    Point pt = e.GetPosition((UIElement)sender); 

    // Perform the hit test against a given portion of the visual object tree. 
    HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt); 

    if (result != null) 
    { 
     // Perform action on hit visual object. 
    } 
} 

他のオーバーロードは、あなたに複数のヒットビジュアルを与えることができます。

+0

この例では、myCanvasとは何ですか? – Matt

+0

私がやりたいことが操作からのコンテンツを除外したいのであれば? http://goo.gl/pCdVSr – Jordan

0

あなたのUI要素は次のようにUIElementのクラスを拡張してみましょう:

class MyUIElement : UIElement 
    { 
     protected override void OnManipulationStarting(System.Windows.Input.ManipulationStartingEventArgs e) 
     { 
      base.OnManipulationStarting(e); 
      UIElement involvedUIElement = e.Source as UIElement; 

      // to cancel the touch manipulaiton: 
      e.Cancel(); 
     } 
    } 

involvedUIElementを使用して、特定の要素のための操作をキャンセルする必要がある場合は、あなただけe.Cancel();

を呼び出す必要があり、タッチイベントを発生させたUI要素を保持する必要があります

こちらがお役に立てば幸いです。

関連する問題