Windows 8 / XAML双击事件始终以Tap为前缀

时间:2012-11-13 12:48:28

标签: c# xaml windows-8 touch double-click

我在应用中有一个按钮。我希望它根据我是否点击它(暂停动画)或双击(重新启动动画)来做不同的事情

然而,当我双击时,它似乎首先触发点击事件然后快速连续点击两次。有没有解决的办法?这是一个已知的问题还是我犯了一个菜鸟错误?

编辑:对于那些提问,我正在使用TappedDoubleTapped事件。

3 个答案:

答案 0 :(得分:16)

将一些暂停给单个标签。如果出现双标签,则单个标签事件被删除

  bool singleTap;
    private async void control_Tapped_1(object sender, TappedRoutedEventArgs e)
    {
        this.singleTap = true;
        await Task.Delay(200);
        if (this.singleTap)
        {
              // Single tab Method .
        }
    }

    private void control_DoubleTapped_1(object sender, DoubleTappedRoutedEventArgs e)
    {
        this.singleTap = false;

        // Double tab Method  
  }

答案 1 :(得分:4)

您可能需要考虑让它同时执行这两项操作。想想它就像双击Windows中的文件夹一样。用户将习惯第一次点击时发生的事情(突出显示文件夹),他们将期望双击以突出显示,然后导航。

总而言之,这似乎是一个设计问题,而不是技术问题。

答案 2 :(得分:0)

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern uint GetDoubleClickTime();
    bool _singleTapped = false;

        //Tapped event handler
        private async void control_Tapped(object sender, TappedRoutedEventArgs e)
        {
        _singleTapped = true;
            //var x = GetDoubleClickTime();
            //GetDoubleClickTime() gets the maximum number of milliseconds that can elapse between a first click and a second click
            await Task.Delay(TimeSpan.FromMilliseconds(GetDoubleClickTime()));

            if (!_singleTapped)
            { return; }
           //SingleTapped code
        }

        //DoubleTapped event handler
        private async void control_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            _singleTapped = false;
            //DoubleTapped code
        }