Tapped事件在WinRT中的DoubleTapped事件之前触发

时间:2013-06-26 14:58:39

标签: xaml windows-runtime windows-store-apps winrt-xaml

我有以下声明:

<Button Tapped="Handler1" DoubleTapped="Handler2" />

每次双击按钮,Handler都会被解雇。处理程序2永远不会被解雇。

感谢。

2 个答案:

答案 0 :(得分:1)

你不能这样做,因为它总会触发第一个点击事件。您可以使用布尔值或计数器管理单击事件的双击,以管理以下点击事件。

答案 1 :(得分:1)

我不知道为什么DoubleTapped处理程序不会被调用。这应该。也许IsDoubleTapEnabled设置为false?这不仅可以通过在XAML中显式设置属性来实现,而且例如也可以通过继承样式中的值。

但即使DoubleTapped有效,Tapped事件也会始终触发一次。控件不是算命先生:当第一次点击发生时,它不知道第二次点击将很快跟随,因此它会触发Tapped事件。如果您不想这样做,则需要实现自己的行为,并忽略或延迟Tapped事件。

MSDN

  

如果用户互动也会触发DoubleTapped,则Tapped将首先触发以表示第一次点击,但第二次点击将不会触发其他Tapped。如果你想要Tapped与DoubleTapped的不同逻辑,你的Tapped处理程序可能需要使用特定于应用程序的变量和一个计时器,以避免在最终被解释为DoubleTap操作的交互上运行。

UX guidelines通常不鼓励使用双击。我不会将它们与按钮一起使用,因为按钮通常不会以这种方式工作,而且会破坏用户的期望。