При использовании приложения WPF на windows 10 с сенсорным экраном возникает проблема с просмотром списка. При работе с мышью все работает нормально.
Мы создали простой тест-проект, который используется для имитации проблемы на windows 10 и может быть найден на GitHub . Билет также создается на MSDN
Вкратце ниже краткая информация о технической настройке:
- Мы используем сгруппированный просмотр списка, и для каждой группы: кнопка переключения и другой (внутренний) вид списка.
- Внутренний вид списка использует ItemTemplateSelector, связанный с селектором Datatemplate, для выбора матрицы данных.
- Существует 3 таблицы данных (флажок, цифра c, текст ), который будет выбран на основе свойства type ограниченной модели.
- Каждая табличка данных имеет панель стека. Панель стека в тексте с цифрой c дата-табличка привязана к событию PreviewMouseDown. Важно, чтобы панель стека в флажке не была связана с событием.
В целом это работает хорошо, однако иногда при касании флажка вызывается PreviousMouseDown другого шаблона.
Я ожидаю, что такое поведение может не произойти, это правильно?
Мы нашли обходной путь (*) для этой проблемы, но мы не нашли причину root.
Почему запускается событие другого шаблона?
I ' Я начинаю полагать, что это может быть проблемой с WPF Listview и сенсорным поведением?
(*) Если мы знаем, что иногда событие вызывается из неправильного шаблона, мы проверять каждое событие, происходит ли это событие из правильного шаблона, и если нет, мы ничего не делаем.
Ниже, при быстром нажатии на флажок, вы можете увидеть, как срабатывает получение клика.
Ниже приведено более подробное описание кода:
- Таблицы данных и селектор
- Сгруппированный просмотр списка с внутренним представлением списка и шаблоном элемента селектор
- Ниже кода и обработчик события PreviewMouseDown
Ниже приведен обзор шагов, которые мы предприняли для его решения, но ни один из них не привел к решению.