public static bool IsDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { System.Windows.Point position = e.GetPosition(null); long clickTicks = DateTime.Now.Ticks; long elapsedTicks = clickTicks - _LastClickTicks; long elapsedTime = elapsedTicks / TimeSpan.TicksPerMillisecond; bool quickClick = (elapsedTime <= k_DoubleClickSpeed); bool senderMatch = (_LastSender != null && sender.Equals(_LastSender.Target)); if (senderMatch && quickClick && position.Distance(_LastPosition) <= k_MaxMoveDistance) { // Double click! _LastClickTicks = 0; _LastSender = null; return(true); } // Not a double click _LastClickTicks = clickTicks; _LastPosition = position; if (!quickClick) { _LastSender = new WeakReference(sender); } return(false); }