2011-04-27 61 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处理的非常行为改变的触摸事件被提升到鼠标事件的方式。不知道为什么会这样,但它为我做了伎俩。