2011-08-31 76 views
1

这有点奇怪,所以我希望也许别人也碰到过这个,也许知道如何解决它。在SurfaceScrollViewer控件中获取控件难以获得焦点的难度

我正在研究一个WPF应用程序,最终将在Windows平板电脑上运行。因为它是一个触摸屏设备,所以在显示要滚动的项目列表时,我使用了SurfaceScrollViewer控件,并且它工作得非常好。

我发现,如果我在SurfaceScrollViewer中显示TextBox控件,除非您真的快速反复敲击五六次,否则无法编辑文本框 - 只有这样他们才能获得焦点。

如果我改用ScrollViewer,它可以正常工作。在台式机上运行时也可以正常工作 - 这只是平板电脑上的一个问题。

任何想法?

总之,这是主要的结构:SurfaceScrollViewer/StackPanel中/ ItemsControl的

即使我只是一个TextBox控件作为的ItemsControl的DataTemplate中,它仍然同样的问题困扰。

噢 - 这也发生在按钮上。它不限于TextBox控件。

回答

2

TextBox和Button不知道如何处理触摸事件,如Surface *控件。当您触摸文本框时,首先会发送触摸事件。 TextBox忽略它,然后它转到SurfaceScrollViewer。 SSV说“是的,我可以用这个做点什么”,所以它处理事件&捕获输入。 TextBox不会再有与该触摸相关的事件。

所以......诀窍是要么处理TextBox上的TouchDown事件......要么更好,只需使用SurfaceTextBox控件,它将为您(和其他帮助触摸的东西)提供帮助。 Button/SurfaceButton和其他许多标准控件也是如此。作为一般规则,只要它们存在,就使用控件的Surface版本。

+0

太棒了 - 谢谢!这确实有效。现在我只需要应用正确的风格,我应该很好去。非常有用的解释为什么发生这种情况 - 谢谢! –