可以通过MouseRightButtonDown事件检测触摸并按住手势。不幸的是,直到我从屏幕上松开手指时,它才会触发。这来晚了!
有人有想法吗?提前致谢。
有可能以一种等待的方式做到这一点。创建具有特定间隔的计时器。当用户点击时启动它,并在计时器经过时返回该方法。如果用户松开手,则返回带有错误标志的方法。
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)
有关更多信息,请阅读这篇文章。