Трудно получить элементы управления в элементе управления SurfaceScrollViewer, чтобы получить фокус - PullRequest
1 голос
/ 31 августа 2011

Это немного странно, поэтому я надеялся, что, возможно, кто-то еще сталкивался с этим, и, возможно, знает, как решить эту проблему.

Я работаю над приложением WPF, которое будетв конечном итоге будет работать на планшетных ПК с Windows.Поскольку это устройство с сенсорным экраном, я использовал элемент управления SurfaceScrollViewer при отображении списков элементов для прокрутки, и он работает очень хорошо.

Я обнаружил, что если я показываю элемент управления TextBox в SurfaceScrollViewer,Вы не можете редактировать текстовое поле, если вы не нажимаете на него многократно пять или шесть раз очень быстро - только тогда они получают фокус.

Если я использую ScrollViewer вместо этого, он работает нормально.Он также отлично работает при запуске на рабочем столе - это только проблема на планшетном ПК.

Есть идеи?

Подводя итог, это основная структура: SurfaceScrollViewer / StackPanel / ItemsControl

Даже если у меня только один элемент управления TextBox в качестве DataTemplate ItemsControl, он все еще страдает от той же проблемы.

О - и это также происходит с кнопками.Он не ограничен элементом управления TextBox.

1 Ответ

2 голосов
/ 31 августа 2011

TextBox и Button не знают, как обрабатывать события Touch, как это делают элементы управления Surface *.Когда вы касаетесь TextBox, сначала отправляется событие касания.TextBox игнорирует его, поэтому он переходит к SurfaceScrollViewer.SSV говорит: «Да, хорошо, я могу что-то сделать с этим», поэтому он обрабатывает событие и фиксирует ввод.TextBox больше не получает событий, связанных с этим касанием.

Итак ... хитрость заключается в том, чтобы обрабатывать событие TouchDown в вашем TextBox ... или еще лучше, просто используйте элемент управления SurfaceTextBox, который сделает это за вас.(и другие вещи, чтобы помочь с прикосновением).То же самое касается Button / SurfaceButton и многих других стандартных элементов управления.Как правило, всегда используйте версии элементов управления Surface, когда они существуют.

...