杰里米的回答并不完全准确。在另一个线程中,有人报告说在快速连续单击/轻敲时轻敲的工作方式与单击的工作方式不同,并且使用下面的代码很容易重现,并且可以很容易地扩展到指针事件。
public sealed partial class MainPage : Page
{
private int clicks = 0;
private int taps = 0;
public MainPage()
{
this.InitializeComponent();
var button = new Button();
button.Width = 500;
button.Height = 200;
button.Content = string.Format("Clicks: {0}, Taps: {1}", clicks, taps);
button.Click += (s, e) => button.Content = string.Format("Clicks: {0}, Taps: {1}", ++clicks, taps);
button.Tapped += (s, e) => button.Content = string.Format("Clicks: {0}, Taps: {1}", clicks, ++taps);
this.Content = button;
}
}
Click
是您应该在常规按钮上处理的内容。它具有按钮所期望的逻辑。我能想到的事情包括
- 它可以与键盘和鼠标一起使用
- 即使您按下按钮并缓慢释放它也可以工作
- 当您按下按钮时可以取消它,也可以在之前按下按钮后通过拖回它来恢复
- 它一次仅限于一个按钮,因此如果您尝试同时单击两个按钮 - 第一个触摸不会单击(与支持多用户交互的原始 Surface/PixelSense 不同!)
- 它可能更适用于自动化等功能以及 Windows 的辅助功能
- 它总是有效
如示例代码中所示 -Tapped
如果您重复点击,该事件不会注册所有点击。我不确定这是否是因为某些底层手势识别逻辑看到了一些双击,或者出于任何其他原因简单地拒绝了其他所有点击。它适用于快速的单点触摸/笔点击或鼠标点击,但它是一个通用事件,您可以处理任何事件,UIElement
如果您想区分点击、双击、右键点击 (!) 或按住任意 UI 元素,则可以使用它.
指针事件是较低级别的,您可以使用它们来处理框架中尚未内置的稍微高级的交互。正如我所提到的 - 单击包括按钮上发生的按下和伴随的释放,因此可以使用指针事件对类似的交互进行建模。例如,您可以使用它来实现某种类型的 Whac-A-Mole/Twister 组合类型的游戏,在其中您想要同时混合许多 UI 元素,而这是您无法通过点击完成的。