这有点奇怪,所以我希望也许其他人也遇到过这个,也许知道如何解决它。
我正在研究最终将在Windows平板电脑上运行的WPF应用程序。因为它是一个触摸屏设备,所以我在显示要滚动的项目列表时使用了SurfaceScrollViewer控件,它的效果非常好。
我发现如果我在SurfaceScrollViewer中显示一个TextBox控件,你就无法编辑文本框,除非你快速重复点击它们大约五到六次 - 只有这样才能获得焦点。
如果我使用ScrollViewer,它可以正常工作。它在桌面上运行时也能正常工作 - 这只是平板电脑上的一个问题。
有什么想法吗?
总结一下,这是主要结构:SurfaceScrollViewer / StackPanel / ItemsControl
即使我只有一个TextBox控件作为ItemsControl的DataTemplate,它仍然会遇到同样的问题。
哦 - 这也发生在按钮上。它不仅限于TextBox控件。
答案 0 :(得分:2)
TextBox和Button不知道如何处理像Surface *控件这样的Touch事件。触摸TextBox时,首先会发送触摸事件。 TextBox忽略它,然后它转到SurfaceScrollViewer。 SSV说:“是的,我可以用这个做点什么”所以它处理事件&捕获输入。 TextBox没有获得与该触摸相关的其他事件。
所以...诀窍是要处理TextBox上的TouchDown事件......或者更好的是,只需使用SurfaceTextBox控件,它将为你做这些(以及其他帮助触摸的东西)。 Button / SurfaceButton和许多其他标准控件也是如此。作为一般规则,只要它们存在,就使用Surface版本的控件。