2011-08-31 47 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

太棒了 - 謝謝!這確實有效。現在我只需要應用正確的風格,我應該很好去。非常有用的解釋爲什麼發生這種情況 - 謝謝! –