0

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

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

4

2 回答 2

1

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

在您的事件处理程序中,您可以通过ManipulationDeltaEventArgs.Manipulators获取所有当前接触点的列表

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

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

于 2013-10-31T14:12:01.197 回答
1

这里有两个选项,但它们可能不是最正确的方法:

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

2) 订阅Touch.FrameReported它,您可以从TouchFrameEventArgs.GetTouchPoints(null);. 这将在每次触发触摸事件时发生,因此可能过于频繁,但它允许您从任何类处理此事件。

于 2013-06-25T18:18:15.473 回答