2014-03-25 18 views
1

在停止或反轉ScrollViewer上的滾動條時,我的屏幕觸摸事件(ManipulationStarted,MouseLeftButtonDown,MouseMove,Tap等)都不會觸發。即使發生這種情況,我如何捕獲屏幕觸摸事件?在Windows Phone 8上獲取觸摸事件,即使在停止或反轉滾動條時

這些事件在ScrollViewer完全停止投擲後纔會觸發,而不是停止或反轉現有投擲時。

編輯:我需要得到被觸摸的實際元素。

回答

0

我想你可以嘗試使用FrameReported事件,在這個事件中你可以從TouchPanel讀取手勢。簡單的例子可以看起來像這樣:

using Microsoft.Xna.Framework.Input.Touch; 
using Microsoft.Xna.Framework; 

public MainPage() 
{ 
    InitializeComponent(); 
    TouchPanel.EnabledGestures = (GestureType)1023; // read all gestures 
    Touch.FrameReported += Touch_FrameReported; 
} 

private void Touch_FrameReported(object sender, TouchFrameEventArgs e) 
{ 
    if (TouchPanel.IsGestureAvailable) 
    { 
     GestureSample gesture = TouchPanel.ReadGesture(); 
     float Xposition = gesture.Position.X; 
     float Yposition = gesture.Position.Y; 
    } 
} 

根據您的目的,您可以啓用一些手勢並從中讀取各種屬性。

+0

我得到觸摸事件,但這並不告訴我哪個項目被觸摸 - 我如何查詢滾動佈局中任何「UIElement」(例如'Image')的相關頂部,底部,左側和右側,以便我可以用你的例子中的'Xposition'和'Yposition'來確定'UIElement'被觸摸了嗎?我編輯了這個問題。如果沒有辦法,那麼在這種情況下,您是否建議採用其他方式獲取觸摸物品? – Navigateur

+0

@Navigateur是的 - 這不會給UIElement信息。如果你想檢查單個元素,你可以嘗試檢查該元素的位置'GeneralTransform myTransform = App.Current.RootVisual.TransformToVisual(UIElement); Point myPoint = myTransform.Transform(new Point(0,0));'。但這是一個艱難的解決方法。但爲什麼不使用UIElement的Tap事件? – Romasz

+0

因爲Tap事件從不在所述條件下觸發。在任何現有的動畫動畫中執行普通的點擊(沒有任何拖動)時,Tap事件應該在釋放屏幕時觸發,但事實並非如此,或者是由微軟做出的糟糕的設計決定,或者是偶然的錯誤。 – Navigateur

相關問題