难以在Surface ScrollViewer控件中获取控件以获得焦点

时间:2011-08-31 15:48:51

标签: wpf focus scrollviewer tablet pixelsense

这有点奇怪,所以我希望也许其他人也遇到过这个,也许知道如何解决它。

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

我发现如果我在SurfaceScrollViewer中显示一个TextBox控件,你就无法编辑文本框,除非你快速重复点击它们大约五到六次 - 只有这样才能获得焦点。

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

有什么想法吗?

总结一下,这是主要结构:SurfaceScrollViewer / StackPanel / ItemsControl

即使我只有一个TextBox控件作为ItemsControl的DataTemplate,它仍然会遇到同样的问题。

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

1 个答案:

答案 0 :(得分:2)

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

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