WPF中有没有办法获得活跃的接触点?我需要确定用户是否正在触摸屏幕,类似于Mouse
类的Pressed
-property?
我只需要知道屏幕上是否存在任何触摸 - 不要介意它触摸的是什么 UIElement。
您可以订阅主窗口 ManipulationStarting 事件(当第一根手指与屏幕接触时)、ManipulationInertiaStarting 事件(当最后一根手指离开屏幕时)和/或 ManipulationDelta 事件(当任何手指移动时)。
在您的事件处理程序中,您可以通过ManipulationDeltaEventArgs.Manipulators获取所有当前接触点的列表
不要忘记将主窗口的 IsManipulationEnabled 设置为 true。
这样,您只需记住当前是否正在进行操作。您不必自己跟踪所有单独的接触点。
这里有两个选项,但它们可能不是最正确的方法:
1)您可以订阅MainWindow.PreviewTouchDown
并MainWindow.PreviewTouchUp
维护所有当前触摸设备的列表。这很容易实现,但可能会使您的代码混乱。
2) 订阅Touch.FrameReported
它,您可以从TouchFrameEventArgs.GetTouchPoints(null);
. 这将在每次触发触摸事件时发生,因此可能过于频繁,但它允许您从任何类处理此事件。