1

Microsoft Surface コントロールを使用する WPF4 タッチ アプリケーションを開発しています。ScatterViewItem で MouseDoubleClick イベントをキャッチしたいと思います。マウスを使用するとイベントが発生しますが、指を使用するとイベントが発生しません。なんで ?

どうもありがとう。

更新

最後に、このコードを作成して、TouchLeave イベントを 2 つの TouchLeave イベント間の所要時間 500ms で制限された四角形 (幅と高さ 16px) で単純なダブルタップを再現しました。このコードは最適化されていませんが、動作します。コメントがある場合は、躊躇しないでください :)

private bool _doubleHasTimeAndPos = false;

private TimeSpan? _doubleTouchTime = null;
private Point? _doubleTouchPoint = null;    

private void ScatterViewItem_TouchLeave(object sender, TouchEventArgs e)
    {
        if (!this._doubleHasTimeAndPos)
        {
            this._doubleTouchTime = DateTime.Now.TimeOfDay;
            this._doubleTouchPoint = e.GetTouchPoint(this.scatterView).Position;

            this._doubleHasTimeAndPos = true;
        }
        else
        {
            if (DateTime.Now.TimeOfDay.Subtract(this._doubleTouchTime.Value).TotalMilliseconds <= 500)
            {
                Point touchPoint = e.GetTouchPoint(this.scatterView).Position;

                double xDelta = Math.Abs(this._doubleTouchPoint.Value.X - touchPoint.X);
                double yDelta = Math.Abs(this._doubleTouchPoint.Value.Y - touchPoint.Y);

                if (xDelta <= 16 && yDelta <= 16)
                {
                    // DOUBLE TAP here !
                }
            }

            this._doubleTouchTime = null;
            this._doubleTouchPoint = null;

            this._doubleHasTimeAndPos = false;
        }
    }
4

2 に答える 2

0

このコードをテストするためのタッチインフラストラクチャが不足しているため、推測してください...

WPFでは、任意のUIElementにMouse.MouseDown添付イベントを使用してから、((MouseButtonEventArgs)e.ClickCount)を使用してダブルクリックの値2を確認することをお勧めします。

     <ScatterViewItem Mouse.MouseDown="MouseButtonEventHandler" ... />

その後

     private void MouseButtonDownHandler(object sender, MouseButtonEventArgs e)
     {
           if (e.ClickCount == 2) 
           {
                  //// Its a double click... should work for touch.
           }
     }

これが機能するかどうか教えてください...

于 2011-08-02T11:44:34.413 に答える
0

API レベルでは、タッチ イベントはダブルクリック イベントを生成しません。

さらに、Microsoft の Surface UI デザイン ガイドライン (免責事項: 私はその作成を手伝いました) は、実際には「ダブルタップ」の概念に対して強くアドバイスしています。タッチは、「隠された」機能のトレーニング、ドキュメント、または記憶を必要とせずに、ユーザーがテクノロジーと対話するより「自然な」方法を提供することを目的としています。ダブルタップは、物理的な世界で人間が行う操作ではなく、視覚的なアフォーダンスがあるものでもありません。したがって、ソフトウェア アプリケーションでの使用は適切ではありません。Apple はこの哲学に同意しています。ところで、iPhone や iPad ではダブルタップ操作は表示されません。

于 2011-08-02T20:58:01.313 に答える