Стратегия различения TouchUp от TouchLeave и TouchDown от TouchEnter?

Для базового сценария, описанного в обзоре msdn (в разделе Touch and Manipulation) TouchEnter и TouchLeave запускаются для каждого соответствующего TouchDown и TouchUp соответственно. В отличие от мыши, сенсорный экран и стилус не ограничены в поддержании контакта с экраном.

Есть ли способ использовать TouchEnter и TouchLeave для захвата, только когда палец перетаскивается в UIElement. Поскольку эти события запускаются для каждого TouchUp и TouchDown, как лучше всего различать эти события?

Одна стратегия, которая будет работать для случая с одним пальцем, - установить флаг на TouchDown и проверить, установлен ли флаг на TouchUp. Это позволяет выполнять некоторые проверки условий в TouchUp. Однако для нескольких пальцев это невозможно.

Не запускаются события PreviewTouchEnter и PreviewTouchLeave, только PreviewTouchDown и PreviewTouchUp. Последовательность событий для пальца, опущенного на UIElement, а затем поднятого над ним, выглядит следующим образом:

  1. TouchEnter
  2. PreviewTouchDown
  3. TouchDown
  4. PreviewTouchUp
  5. TouchUp
  6. TouchLeave

Эта последовательность не помогает отличить TouchEnter, который произошел из-за перетаскивания пальца по экрану в UIElement, от пальца, опущенного непосредственно на UIElement.Я что-то упустил, или фреймворк сам по себе не поддерживает такую ​​дифференциацию?

6
задан H.B. 15 January 2012 в 22:53
поделиться