我是为PointerPressed,Click,还是the创建事件处理程序,这有什么关系吗?
<Button x:Name="BackButton" PointerPressed="BackButton_Click"/>
<Button x:Name="BackButton" Click="BackButton_Click"/>
<Button x:Name="BackButton" Tapped="BackButton_Click"/>发布于 2012-11-21 20:21:40
Click是为了向后兼容,本质上和the是一样的。点击是一种“高级手势”,它会自动转换为点击、点击、按笔等操作,这也是我推荐使用的。
PointerPressed不是你想要的。原因如下:如果我按住不放,PointerPressed事件将在我最初“按”的时候触发,然后一旦完成就会触发一个PointerReleased。这是更低级的,你可以决定它被按了多长时间,等等。通常,长按不是你想要考虑的“点击”或“点击”,因为根据定义,点击是较短的持续时间。因此,对于你想要的东西,"Tap“是最好的传达方式,因为它使用系统计时为你翻译了被认为是"Tap”的手势与按住的手势,并自动将点击和笔压提升到同一事件。无论交互持续多长时间,只要按下按钮或手指,PointerPressed都会触发。
我有一个相当复杂的应用程序,它演示了你可以从http://windows8applications.codeplex.com下载的各种交互-只需参考名为“触摸”的第4章示例。
发布于 2014-04-01 14:33:12
Jeremy的回答并不完全准确。在another thread中,有人报告说,在快速连续点击/点击时,点击与点击的工作方式不同,这很容易通过以下代码重现,并且可以很容易地扩展到指针事件。
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是您应该在常规按钮上处理的内容。它具有按钮所需的逻辑。我能想到的事情有
如示例代码所示-如果您重复点击,则Tapped事件不会为所有点击注册。我不确定这是不是因为一些潜在的手势识别逻辑看到了一些双击,或者只是出于其他原因拒绝了其他点击。它适用于快速的单次触摸/笔轻击或鼠标单击,但它是一个通用事件,您可以在任何UIElement上处理它,如果您想要区分轻击、双击、右键轻击(!)或者持有任意的UI元素。
指针事件是较低级别的,您可以使用它们来处理框架中尚未内置的稍微高级的交互。正如我所提到的-点击由按钮上的按下和伴随释放组成,所以类似的交互可以用指针事件来模拟。例如,你可以使用它来实现某种Whac-A-Mole/Twister组合类型的游戏,在这种游戏中,你想要同时混搭许多UI元素,这是你不能用点击来做的。
发布于 2017-01-04 01:26:12
您应该使用单击按钮(以及ListView、超链接、MenuFlyoutItem、ContentDialog等)。Tapped只是一个指针事件,所以如果你使用键盘、访问键或自动操作,它不会被调用。
https://stackoverflow.com/questions/13318569
复制相似问题