2011-04-27 59 views
1

我目前使用Silverlight4來構建具有觸摸支持的OOB應用程序。我想我所做的就是「多點觸控」,儘管我的應用在任何時候都沒有使用多點觸控。我在各種觸摸顯示器上運行應用程序(標準win7多點觸控)。觸摸不會導致Silverlight OOB應用程序中的按鈕按下狀態

一切似乎除了我的SL按鈕控件是工作(我只是使用標準的控制)。觸摸在觸摸屏上移動了相當大的數量後,按鈕纔會進入「按下」狀態。如果用戶直接將手指放在按鈕上,我永遠不會注意到進入按下狀態的按鈕(然而,點擊很好)。

我會附上一些代碼,但確實沒有太多的代碼正在驅動這個。這在xaml中都是非常標準的VisualStateManager。即使是這種平淡vanila按鈕有問題:

<Button Content="CLICKME"/> 

有什麼明顯的我失蹤或者這只是在Silverlight觸摸輸入的已知的限制?

UPDATE: 看起來這個問題很簡單,就是標準的SL按鈕控制不進行處理觸摸輸入。 WPF中的答案是簡單地使用可正確處理觸摸的Surface Toolkit控件,但這不適用於SL,因爲我無法使用WPF組件。 http://www.triballabs.net/2011/03/reactive-ui-in-windows-touch-and-surface/

回答

0

我能夠通過在我的應用程序中註冊Touch.FrameReported處理程序來解決此問題。我不知道爲什麼這是工作,因爲我的處理程序實際上沒有做任何事情,但由於某種原因,按鈕立即開始工作。請注意,這隻適用於非全屏應用程序(全屏SL應用程序似乎不支持觸摸)。下面是代碼:

(in Application_Startup) 
Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported); 

(in my App class) 
void Touch_FrameReported(object sender, TouchFrameEventArgs e) {} 

看來,註冊Touch.FrameReported處理的非常行爲改變的觸摸事件被提升到鼠標事件的方式。不知道爲什麼會這樣,但它爲我做了伎倆。