Для базового сценария, описанного в обзоре msdn (в разделе Touch and Manipulation) TouchEnter и TouchLeave запускаются для каждого соответствующего TouchDown и TouchUp соответственно. В отличие от мыши, сенсорный экран и стилус не ограничены в поддержании контакта с экраном.
Есть ли способ использовать TouchEnter и TouchLeave для захвата, только когда палец перетаскивается в UIElement. Поскольку эти события запускаются для каждого TouchUp и TouchDown, как лучше всего различать эти события?
Одна стратегия, которая будет работать для случая с одним пальцем, - установить флаг на TouchDown и проверить, установлен ли флаг на TouchUp. Это позволяет выполнять некоторые проверки условий в TouchUp. Однако для нескольких пальцев это невозможно.
События PreviewTouchEnter и PreviewTouchLeave не запускаются, только PreviewTouchDown и PreviewTouchUp. Последовательность событий для пальца, опущенного на UIElement, а затем поднятого над ним, выглядит следующим образом:
- TouchEnter
- PreviewTouchDown
- TouchDown
- Предварительный просмотр
- TouchUp
- TouchLeave
Эта последовательность не помогает отличить TouchEnter, который произошел из-за перетаскивания пальца по экрану в UIElement, от пальца, опущенного непосредственно на UIElement. Я что-то упускаю или сам фреймворк не поддерживает такую дифференциацию?