B. *_*non 33 xaml event-handling windows-8 winrt-xaml windows-store-apps
是否为PointerPressed,Click或Tapped创建事件处理程序是否重要?IOW,以下是否有任何功能差异:
<Button x:Name="BackButton" PointerPressed="BackButton_Click"/>
<Button x:Name="BackButton" Click="BackButton_Click"/>
<Button x:Name="BackButton" Tapped="BackButton_Click"/>
Run Code Online (Sandbox Code Playgroud)
?
Jer*_*ess 53
Click是为了向后兼容,与Tapped基本相同.Tapped是一种"高级手势",可以自动转换为点击,点按,按键等,这是我建议使用的.
PointerPressed不是你想要的.原因如下:如果我按住,PointerPressed事件将在我最初"按下"时触发,然后PointerReleased将在完成后触发.这是更低级别的,您可以决定按下它的时间等.通常长按不是您想要的"点击"或"点按",因为根据定义,Tap是较短的持续时间.因此,对于您想要的内容,"点击"会最好地传达它,因为它会使用系统时序为您翻译手势,因为它被视为"点击"与保持,并自动促进点击和笔按到同一事件.无论交互持续多长时间,只要按下按钮或按下手指,PointerPressed就会触发.
我有一个相当复杂的应用程序,演示了您可以从http://windows8applications.codeplex.com下载的各种交互- 只需参考第4章称为"触摸"的示例.
Fil*_*kun 23
杰里米的答案并不完全准确.在另一个线程中有人报告说,当快速连续点击/点击时,点击的工作方式与点击的工作方式不同,并且很容易使用下面的代码重现,并且很容易扩展到指针事件.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Click
是你应该在常规按钮上处理的.它具有按钮所需的逻辑.我能想到的是
如示例代码所示 - Tapped
如果重复点击,事件不会注册所有分接头.我不确定这是否是因为某些潜在的手势识别逻辑会看到一些双击或者因为其他原因而拒绝其他所有点击.它适用于快速单点触摸/笔点击或鼠标点击,但它是一个通用事件,你可以处理任何UIElement
,如果你想区分点击,双击,右点击(!)或保持任意UI元素可能会使用它.
指针事件是较低级别的,您可以使用它们来处理尚未构建到框架中的稍微更高级的交互.正如我所提到的 - 点击包括按钮上的按下和伴随释放,因此类似的交互可以用指针事件建模.例如,您可以使用它来实现某种类型的Whac-A-Mole/Twister组合类型的游戏,在这种类型的游戏中,您希望同时混合许多UI元素,而这些元素是您无法通过点击进行的.
您应该使用Click for Buttons(以及ListView,Hyperlink,MenuFlyoutItem,ContentDialog等).Tapped只是一个指针事件,因此如果您使用键盘,访问键或自动化,则不会调用它.
归档时间: |
|
查看次数: |
17208 次 |
最近记录: |