Je développe une application tactile WPF4 qui utilise des contrôles Microsoft Surface. Je voudrais attraper l'événement MouseDoubleClick sur un ScatterViewItem. L'événement se déclenche lorsque j'utilise la souris, mais lorsque j'utilise mon doigt, l'événement n'est jamais déclenché. Pourquoi ?MouseDoubleClick & Touch sur un ScatterViewItem
Merci beaucoup.
MISE À JOUR:
J'ai finalement écrit ce code pour reproduire un simple double tap avec l'événement TouchLeave sur une rect limitée (16px largeur & hauteur) et 500 ms pour le temps nécessaire entre les 2 événements TouchLeave. Ce code n'est pas optimisé, mais cela fonctionne, si vous avez une remarque, ne pas hésiter :)
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) vous ne devriez pas faire cela - voir ma réponse ci-dessous. 2) vous devriez utiliser TouchUp au lieu de TouchLeave. Le congé est levé dans plusieurs circonstances autres que le fait de lever le doigt. 3) pour comparer les coordonnées entre les événements tactiles, vous devez utiliser les coordonnées relatives à l'écran plutôt que le scatterview. le scatterview ou même la fenêtre dans laquelle il se trouve pourrait se déplacer entre les événements. Ceci est une source commune de bugs difficiles à diagnostiquer –
merci pour votre remarque, mais l'événement TouchDown/TouchUp ne semble jamais être soulevé sur mon ScatterViewItem ... Je ne sais pas pourquoi ... – Nico