如何在WPF应用程序中检测“触摸按住”手势?

And*_*eas 1 wpf touch gesture

可以通过MouseRightButtonDown事件检测触摸并按住手势。不幸的是,直到我从屏幕上松开手指时,它才会触发。这来晚了!

有人有想法吗?提前致谢。

Jaw*_*har 5

有可能以一种等待的方式做到这一点。创建具有特定间隔的计时器。当用户点击时启动它,并在计时器经过时返回该方法。如果用户松开手,则返回带有错误标志的方法。

public static Task<bool> TouchHold(this FrameworkElement element, TimeSpan duration)
{
    DispatcherTimer timer = new DispatcherTimer();
    TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
    timer.Interval = duration;

    MouseButtonEventHandler touchUpHandler = delegate
    {
        timer.Stop();
        if (task.Task.Status == TaskStatus.Running)
        {
            task.SetResult(false);
        }
    };

    element.PreviewMouseUp += touchUpHandler;

    timer.Tick += delegate
    {
        element.PreviewMouseUp -= touchUpHandler;
        timer.Stop();
        task.SetResult(true);
    };

    timer.Start();
    return task.Task;
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读这篇文章