WPF获得活跃的接触点

时间:2013-06-05 20:23:29

标签: wpf touch

WPF中是否有办法获得有效的触摸点?我需要确定用户是否正在触摸屏幕,类似于Mouse类'Pressed -property?

我只需要知道屏幕上是否有任何触摸 - 不要介意它触摸的是什么UIElement。

2 个答案:

答案 0 :(得分:1)

以下是两个选项,但它们可能不是最正确的方法:

1)您可以订阅MainWindow.PreviewTouchDownMainWindow.PreviewTouchUp并维护所有当前触摸设备的列表。它很容易实现,但可能会使您的代码变得混乱。

2)订阅Touch.FrameReported,您可以从TouchFrameEventArgs.GetTouchPoints(null);获取一系列接触点。这将在每次触发事件触发时发生,因此可能太频繁,但它允许您从任何类处理此事件。

答案 1 :(得分:1)

您可以订阅主窗口ManipulationStarting事件(当第一根手指与屏幕接触时),ManipulationInertiaStarting事件(当最后一根手指抬离屏幕时)和/或ManipulationDelta事件(当任何手指移动时)。

在您的活动处理程序中,您可以通过ManipulationDeltaEventArgs.Manipulators

获取所有当前接触点的列表

不要忘记将主窗口的IsManipulationEnabled设置为true。

这样您只需要记住当前是否正在进行操作。您不必自己跟踪所有单个触摸点。