|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Имеется некое приложение (WPF 4.0, Win7), работающее без клавиатуры, весь ввод идёт от сенсорного экрана. Работает вроде бы нормально, но вот отзывчивость кнопок оставляет желать лучшего - бывает, реагируют с третьего-пятого раза; если расположены рядом, то фокус может при клике по кнопке переползти на соседнюю, итп. Кнопки просто привязаны к командам (экземплярам ICommand) в модели через биндинг, никакой обработки touch events не делается. У кнопок переопределён дефолтный темплейт, но внутри там ничего особенного - Border для раскраски, ContentPresenter, несколько VisualStates и триггреров опять же для перекраски в зависимости от. Focusable и IsTabStop установлены в False, FocusVisualStyle в x:Null. Может, есть для такого случая (сенсорный ввод) какие-то специальные tips & tricks, чтобы сделать интерфейс более отзывчивым? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 07:24 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
только в твоем WPF проблема? стандартные WPF-диалоги винды работают нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 09:22 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Shocker.Pro только в твоем WPF проблема? Видимо, да. Shocker.Pro стандартные WPF-диалоги винды работают нормально? Это приложение вообще не использует стандартных диалогов, поэтому не знаю (но вроде как все именно стандартные диалоги - FileDialog, PrintDialog, всякие там свойства сертификатов, и проч. - они же нативные? По крайней мере, их потроха прекрасно просматриваются с помощью Spy++). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 10:22 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, была аналогичная ситуация- разработка WPF под сенсор, заметил такую особенность- если делать через MVVM и привязвать обратотку кнопки через ICommand- то действительно срабатывает как-то странно и через раз. Но я попробовал сделать обработку клика кнопки через CodeBehind и кнопка отрабатывал четко в 100% случаев. Код: xml 1.
Понимаю, что должно работать одинаково и при CodeBihind и при MvvM, но по факту я заметил такую особенность на сенсорных экранах. Попробуй. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 11:30 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Это приложение вообще не использует стандартных диалогов Но, раз vb_sub сталкивался, надо попробовать его вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 11:36 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
vb_sub Сон Веры Павловны, была аналогичная ситуация- разработка WPF под сенсор, заметил такую особенность- если делать через MVVM и привязвать обратотку кнопки через ICommand- то действительно срабатывает как-то странно и через раз. Но я попробовал сделать обработку клика кнопки через CodeBehind и кнопка отрабатывал четко в 100% случаев. Код: xml 1.
Понимаю, что должно работать одинаково и при CodeBihind и при MvvM, но по факту я заметил такую особенность на сенсорных экранах. Попробуй. Я тоже думал так попробовать, но в моём случае это будет очень трудоёмко - в приложении code behind практически нет, все привязки команд к кнопкам находятся внутри стилей и дататемплейтов, и добраться до этих кнопок, чтобы императивно подцепить хэндлеры кликов и тачей - это будет очень долгая и невесёлая песня. Поэтому, собственно, и ищу серебряную пулю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 11:39 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, просто попробуй на одну кнопку кинуть обработчик- мне самому интересно это у меня только так получилось или везде. Тем более будет более понятно в каком направлении копать далее. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 11:41 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Я тоже думал так попробовать, но в моём случае это будет очень трудоёмко - в приложении code behind практически нет, все привязки команд к кнопкам находятся внутри стилей и дататемплейтов, и добраться до этих кнопок, чтобы императивно подцепить хэндлеры кликов и тачей - это будет очень долгая и невесёлая песня. Поэтому, собственно, и ищу серебряную пулю :) Главное обойти проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 11:43 |
|
Кнопки и сенсорный экран
|
|||
---|---|---|---|
#18+
Как выяснилось, вышеописанное поведение на сенсорных экранах - это достаточно давно известный баг: https://github.com/dotnet/wpf/issues/194 Просто навешивание обработчиков кликов в code-behind в моём случае ничего не дало. Слегка исправил картину способ, указанный здесь . Указанные по этой же ссылке хотфиксы на сайте MS сейчас недоступны - вместо хотфикса они настоятельно предлагают перейти на Win10, что в моем случае невозможно. Вариант с дективацией tablet device (там же ниже) не дал вообще никакого эффекта. Из интересного: оказывается, в случае сенсорного экрана еще могут некорректно отрабатывать VisualState's в темплейте - способ борьбы с этим есть здесь . Препарирование механизма touch events в связке с mouse events, и почему последние могут вообще не работать, если в визуальном дереве у какого-то из родителей установлено IsManipulationEnabled = true: http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html Хоть у меня это свойство нигде не установлено, я всё равно попробовал применить приведенный по ссылке код - метод, вызываемый из TouchUp, судя по содержимому лога, вызывается через раз-другой, т.е. всё-таки TouchPoint живет какой-то своей жизнью, и часто попадает мимо кнопки, несмотря на вызов Mouse.Synchronize. Ну, и на этом вроде бы всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 07:14 |
|
|
start [/forum/topic.php?fid=21&fpage=2&tid=1440302]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 134ms |
0 / 0 |