将TouchUp与TouchLeave和TouchEnter的TouchDown区分开来的策略?

Sas*_*shi 6 wpf multi-touch touch c#-4.0

对于msdn概述中描述的基本场景(在触摸和操作下), TouchEnter和TouchLeave分别针对每个相应的TouchDown和TouchUp触发.与鼠标不同,Touch和Stylus不受约束以保持与屏幕的接触.

有没有办法使用TouchEnter,只有当手指被拖入 UIElement 时才能捕获TouchLeave .当这些事件针对每个touchUp和touchDown触发时,区分这些事件的最佳方法是什么?

一种适用于单指案例的策略是在TouchDown上设置一个标志,并检查该标志是否在TouchUp上设置.这允许在TouchUp上进行一些条件检查.但是,对于多个手指,这是不可行的.

没有触发PreviewTouchEnter和PreviewTouchLeave事件,只有PreviewTouchDown和PreviewTouchUp.手指降低到UIElement然后在其上方举起的事件序列如下:

  1. TouchEnter在
  2. 的PreviewTouchDown
  3. 接地
  4. PreviewTouchUp
  5. 润色
  6. TouchLeave

此序列无助于将因手指拖过屏幕而发生的TouchEnter与直接降低到UIElement上的手指区分开来.我错过了什么,或者框架本身不支持这种差异化?

小智 0

您可以使用TouchDevice类来跟踪生成触摸的位置吗?新触摸会被赋予新 ID,因此您可以区分现有触摸和新触摸,以及哪些元素正在捕获设备。我想这会绕过操纵事件和正常过程,但我希望这会有所帮助。