uwp - 在 UWP 中触发 DoubleTappedEvent 时如何停止 TappedEvent?
问题描述
我有一个带有轻敲和双敲击事件的 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 中做到这一点?
解决方案
官方文档提到“如果您希望 Tapped 与 DoubleTapped 的逻辑不同,您的 Tapped 处理程序可能需要使用特定于应用程序的变量和计时器,以避免在最终被解释为 DoubleTap 操作的交互上运行。”</ p >
所以你可以像下面这样解决这个问题。
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");
}
推荐阅读
- deep-learning - Tensorboard 2.2.1 Windows 10-当前数据集没有激活的仪表板
- cassandra-3.0 - 删除 Cassandra 容器时如何保留数据和架构
- c++ - UTF-8:输入文本和硬编码之间的不同行为
- google-chrome - 在 HTML 页面中从 URL 中选择并以黄色突出显示的文本
- java - 我对编程很陌生,想知道如何在我的 GUI 上显示 JButton
- java - ByteBuddy 是否可以使用 ASM 来实现一个方法
- c - 结构数组未按预期存储数据
- reactjs - API登录反应未连接
- x11 - 从 WSL2 转发 X11 失败
- flutter - 如何将列表的元素转换为单个数字