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