2012-01-25 419 views
1

我確定我已經讀過,有一種方法可以在WPF應用程序中獲取TouchDown的座標,並找出觸摸屏幕下方的「UI元素」。誰能幫忙?在觸摸座標獲取UI元素

+0

爲什麼你想知道用戶界面元素是'底下'這個接觸?你需要排除操縱嗎? 你什麼時候需要它?在操縱三角洲? – simo

+0

我這樣做,我一直想弄清楚如何從頁面滑動操作中排除我的按鈕。 *嘆*看到這裏:http://goo.gl/pCdVSr – Jordan

回答

0

您必須對視覺樹做hit test

下面是一個例子鼠標點擊(但觸摸或多或少在這方面同樣的事情):

// 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. 
    } 
} 

HitTest其他重載可以給你多打的視覺效果。

+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應該認爲提出的觸摸事件的UI元素,如果你需要取消你只需要調用e.Cancel();

特定元素的操作

我希望這會有所幫助!