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

时间:2012-01-15 22:53:06

标签: wpf c#-4.0 touch multi-touch

对于所描述的基本场景in the msdn overview (under Touch and Manipulation)分别针对每个相应的TouchDown和TouchUp触发TouchEnter和TouchLeave。与鼠标不同,Touch和Stylus不受约束以保持与屏幕的接触。

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

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

没有触发PreviewTouchEnter和PreviewTouchLeave事件,只有PreviewTouchDown和PreviewTouchUp。手指的一系列事件降低到UIElement然后在UIElement上升,如下:

  1. TouchEnter在
  2. 的PreviewTouchDown
  3. TouchDown的
  4. PreviewTouchUp
  5. TouchLeave
  6. 此序列无助于将手指拖过屏幕时发生的TouchEnter与直接放在UIElement上的手指区分开来。我错过了什么,或者框架本身不支持这种区分?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您为该活动检索TouchPoint,则其上有一个名为Action的属性,该属性会告诉您该属性是DownMove还是{ {1}}事件。

Up