如何检测何时停止toolkit:GestureListener Hold? [英] How do I detect when toolkit:GestureListener Hold has stopped?

查看:75
本文介绍了如何检测何时停止toolkit:GestureListener Hold?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法可以检测到这一点?只要用户按住图标,我就希望继续执行操作.

Is there a way I can detect this? I want to keep performing an action as long as the user is holding on an icon.

推荐答案

注意:Amresh Kumar在建议使用操纵事件方面是正确的.另外,我在Windows Phone App Hubs论坛上得到了相同的建议,因此我编辑了这篇文章以反映代码更改.

之前,UX不稳定,因为将手指从屏幕上移开并不总是会触发取消操作.毫不奇怪,与鼠标按钮事件相比,该工具包中的GestureCompleted代码似乎更适合触摸屏.

Before, the UX was flaky because lifting my finger off the screen didn't always trigger a cancellation. Not surprisingly, the GestureCompleted code in the toolkit appears to be better geared towards touchscreens than are mouse button events.

XAML:

<iconControls:iconUpDownArrow>
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener Tap="RangeUpTap" Hold="RangeUpHold" GestureCompleted="RangeUpCancel" />
    </toolkit:GestureService.GestureListener>
</iconControls:iconUpDownArrow>

代码:

private void RangeUpTap(object sender, GestureEventArgs e)
{
    RangeIncrementUp(sender, e);
}

private readonly TimeSpan _rangeIncrementTimeSpan = new TimeSpan(1500000);
private readonly DispatcherTimer _rangeIncrementTimer = new DispatcherTimer();

private void RangeUpHold(object sender, GestureEventArgs e)
{
    _rangeIncrementTimer.Interval = _rangeIncrementTimeSpan;

    _rangeIncrementTimer.Tick += RangeIncrementUp;

    _rangeIncrementTimer.Start();
}

private void RangeUpCancel(object sender, GestureEventArgs e)
{
    _rangeIncrementTimer.Stop();

    _rangeIncrementTimer.Tick -= RangeIncrementUp;
}

private void RangeIncrementUp(object sender, EventArgs e)
{
    int range = Convert.ToInt32(tBoxRange.Text);

    if (range < 1000)
    {
        range += 10;
    }

    tBoxRange.Text = range.ToString();
}

这篇关于如何检测何时停止toolkit:GestureListener Hold?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆