在多点触摸屏上捕捉双击触摸

5 c# wpf touch

我已经发布了另一个问题,即如何通过监控TouchDown事件触摸之间的时间间隔来"手动"捕获双击,但它非常错误.有没有人知道在多点触摸屏上捕获双击的标准Microsoft方式/事件?

非常感谢,

Jow*_*wen 10

我检查了水龙头位置和秒表的组合,它完美无缺!

private readonly Stopwatch _doubleTapStopwatch = new Stopwatch();
private Point _lastTapLocation;

public event EventHandler DoubleTouchDown;

protected virtual void OnDoubleTouchDown()
{
    if (DoubleTouchDown != null)
        DoubleTouchDown(this, EventArgs.Empty);
}

private bool IsDoubleTap(TouchEventArgs e)
{
    Point currentTapPosition = e.GetTouchPoint(this).Position;
    bool tapsAreCloseInDistance = currentTapPosition.GetDistanceTo(_lastTapLocation) < 40;
    _lastTapLocation = currentTapPosition;

    TimeSpan elapsed = _doubleTapStopwatch.Elapsed;
    _doubleTapStopwatch.Restart();
    bool tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.7));

    return tapsAreCloseInDistance && tapsAreCloseInTime;
}

private void OnPreviewTouchDown(object sender, TouchEventArgs e)
{
    if (IsDoubleTap(e))
        OnDoubleTouchDown();
}
Run Code Online (Sandbox Code Playgroud)

它检查PreviewTouchDown是否为DoubleTap.