在 UWP 中触发 DoubleTappedEvent 时如何停止 TappedEvent?

how to stop TappedEvent when DoubleTappedEvent is fired in UWP?

我有一个带有点击和双点击事件的 Stackpanel。

        StackPanel ButtonPanel=new StackPanel{Widyh=100,Height=30};
        ButtonPanel.IsDoubleTapEnabled = true;
        ButtonPanel.DoubleTapped += ButtonPanel_DoubleTapped;
        ButtonPanel.Tapped += ButtonPanel_Tapped;

        private void ButtonPanel_Tapped(object sender, TappedRoutedEventArgs e)
        {
        Debug.WriteLine("Tapped");
        }

        private void ButtonPanel_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
        Debug.WriteLine("Double");
        }

当我双击 Stackpanel 时,它会先触发点击事件,然后再触发 doubleTapped event.In 在这种情况下,我不想触发点击事件。双击时如何停止触发 tappedEvent?我想对 tapped 和 doubeTapped 事件执行单独的操作。如何在 UWP 中实现?

official document 提到“如果您想要 Tapped 与 DoubleTapped 的不同逻辑,您的 Tapped 处理程序可能需要使用特定于应用程序的变量和计时器以避免 运行最终被解释为 DoubleTap 操作。”

所以你可以像下面这样解决这个问题。

    public bool singleTap;  
    private async void ButtonPanel_Tapped(object sender, TappedRoutedEventArgs e)
    {
        singleTap = true;
        await Task.Delay(200);
        if (this.singleTap)
        {
         
            Debug.WriteLine("Tapped");
        }
            
    }

    private void ButtonPanel_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
    {
        singleTap = false;
        Debug.WriteLine("Double");
    }