在WinRT应用程序中处理2,3,4,5手指轻敲,双击并保持手势

我可以轻松处理1个手指TappedDoubleTapHolding手势,如下所示:

 public MainPage() { this.InitializeComponent(); this.Tapped += mc_Tapped; this.DoubleTapped += mc_DoubleTapped; this.Holding += mc_Holding; } public void mc_Tapped(object sender, TappedRoutedEventArgs e) { //Tap } public void mc_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) { //DoubleTap } public void mc_Holding(object sender, HoldingRoutedEventArgs e) { //Hold } 

但是这些事件没有获得手指数量的属性,当屏幕上出现超过1个触摸接触时,它们甚至不会被触发。 我还想处理DoubleTap个手指TappedDoubleTapHolding手势。 谁能告诉我怎么做?

你将不得不使用在Pointer事件上传递的PointerRoutedEventArgs(即压缩,输入,释放等)并以艰难的方式去做

每次指针进入控件时都会分配一个唯一的指针ID。我会创建一个Dictionary并在控件上按下时将每个指针添加到该字典中(当它们退出时显然会删除它们)。 然后在你现有的tapped,double tapped和这样的处理程序中,只需查看字典中有多少指针并调用相应的处理程序