Microsoft Surfaceコントロールを使用するWPF4タッチアプリケーションを開発しました。 ScatterViewItemでMouseDoubleClickイベントをキャッチしたいと思います。イベントは、マウスを使用すると起動しますが、私が指を使用するとイベントは発生しません。どうして ?MouseDoubleClick&ScatterViewItemをタッチ
ありがとうございます。
UPDATE:
私は最終的に2つのするTouchLeaveイベント間に必要な時間のために限られたRECT(16pxに幅&高さ)と500msの上するTouchLeaveイベントとシンプルなダブルタップを再現するために、このコードを書きました。このコードは最適化されたが、それはあなたには、いくつかの発言を持っている場合は、躊躇しないでください:)
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;
}
}
1)あなたはこれを行うべきではありません - 下記の私の答えを見てください。 2)TouchLeaveの代わりにTouchUpを使用する必要があります。実際に指を離す以外にいくつかの状況で離れる。 3)タッチイベント間の座標を比較するには、スキャッタビューではなく画面に対する座標を使用する必要があります。それが入っているスキャッタビューやウィンドウ自体がイベント間を移動する可能性があります。これはバグを診断するのが難しい一般的な原因です –
あなたの発言に感謝しますが、TouchDown/TouchUpイベントは私のScatterViewItemで決して上がらないようです...私は理由はわかりません... – Nico