Wpf 难以在SurfaceScrollViewer控件中获取控件以获得焦点

Wpf 难以在SurfaceScrollViewer控件中获取控件以获得焦点,wpf,focus,scrollviewer,tablet,pixelsense,Wpf,Focus,Scrollviewer,Tablet,Pixelsense,这是一个有点奇怪的问题,所以我希望也许其他人也遇到了这个问题,也许知道如何解决它 我正在开发一个最终将在windows平板电脑上运行的WPF应用程序。因为它是一个触摸屏设备,我在显示要滚动的项目列表时使用了SurfaceScrollViewer控件,它工作得非常好 我发现,如果我在SurfaceScrollViewer中显示TextBox控件,除非你以非常快的速度反复点击它五到六次,否则你无法编辑TextBox,只有这样它们才能获得焦点 如果改用ScrollViewer,效果很好。在桌面上运行时

这是一个有点奇怪的问题,所以我希望也许其他人也遇到了这个问题,也许知道如何解决它

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

我发现,如果我在SurfaceScrollViewer中显示TextBox控件,除非你以非常快的速度反复点击它五到六次,否则你无法编辑TextBox,只有这样它们才能获得焦点

如果改用ScrollViewer,效果很好。在桌面上运行时,它也可以正常工作——这只是平板电脑上的一个问题

有什么想法吗

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

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


哦,按钮也是如此。它不限于文本框控件。

文本框和按钮不知道如何像Surface*控件那样处理触摸事件。触摸文本框时,首先会发送一个触摸事件。文本框将忽略它,然后它将转到SurfaceScrollViewer。SSV说“是的,好的,我可以用这个做点什么”,所以它处理事件并捕获输入。TextBox不会获取与该触摸相关的更多事件


所以。。。诀窍是处理文本框上的触地事件。。。或者更好的是,只需使用SurfaceTextBox控件就可以了(以及其他有助于触摸的东西)。按钮/表面按钮和许多其他标准控件也是如此。一般来说,只要存在控件,就使用它们的表面版本。

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