在 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");
}
我有一个带有点击和双点击事件的 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");
}