【问题标题】:how to stop TappedEvent when DoubleTappedEvent is fired in UWP?在 UWP 中触发 DoubleTappedEvent 时如何停止 TappedEvent?
【发布时间】:2021-07-23 14:58:18
【问题描述】:

我有一个 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 时,它会先触发 tapped 事件,然后触发 doubleTapped 事件。在这种情况下,我不想触发 tapped 事件。双击时如何停止触发 tappedEvent?我想对 tapped 和 doubeTapped 事件执行单独的操作。在 UWP 中怎么做?

【问题讨论】:

    标签: uwp uwp-xaml


    【解决方案1】:

    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");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 2011-09-10
      • 2021-06-24
      • 2022-01-25
      相关资源
      最近更新 更多