Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Windows phone > обработка тач событий в "слоях" |
Автор: krozhkov 23.4.2014, 22:09 |
Начал разрабатывать для windows phone 8 три недели назад. Столкнулся с такой проблемой: есть страница с листбоксом. Внизу страницы горизонтальное прокручивающееся меню. В нем под фоном есть canvas где располагается подменю. По вертикальному swipe жесту подменю "вытаскивается" (установкой Canvas.Top в отрицательные значения) и наползает на листбокс (как и задумано). При попытке свернуть меню обратно (тем же swipe жестом только вниз) прокручивается листбокс, который располагается под этим подменю. Объяснения почему так происходит не нашел (а искал!). События OnManipulationStarted, OnManipulationDelta и т.д. обрабатываю на уровне контрола меню (которое горизонтальное меню). Кто может подсказать как обойти проблему? П.С. также было замечено, что при подключении к проекту xaml spy, проблема исчезает. но изучить как xaml spy модифицирует визуальное дерево не удалось, т.к. код обфусцирован. |
Автор: krozhkov 24.4.2014, 08:02 |
Решение найдено. Может кому понадобится: у FrameworkElement есть такой атрибут UseOptimizedManipulationRouting. По умолчанию он True и тогда система сама обрабатывает события ввода и как-то их "оптимизирует". |
Автор: DjonNIK 25.6.2014, 15:28 |
Уж не знаю что это за свойство такое. Но по описанию проблема похожа на невыставленный Background. По умолчанию у Вашего подменю (Canvas) свойство Background равно null и любые события (в частности tap) проваливаются в элементы дальше. А дальше у нас как раз ListBox, в котором происходит обработка прокрутки вниз. Проверить верная ли моя догадка, можно поставив Breakpoint на обработчик события Tap контрола Canvas. Для решения этой проблемы установите у Canvas-а прозрачный Background. |