/// <summary>
        /// Determines whether all the condinitions, needed to process a gesture, are met.
        /// </summary>
        /// <param name="gesture">The gesture to examine.</param>
        /// <returns></returns>
        protected virtual bool CanHandleGesture(Gesture gesture)
        {
            if (!this.IsEnabled)
            {
                return(false);
            }

            if (this.Panel.WaitingForLayout)
            {
                return(false);
            }

            if (gesture.GestureType == KnownGesture.Flick)
            {
                DragDirection flickDirection = GestureBehavior.GetDragDirection((gesture as FlickGesture).Velocity);
                if (this.View.Orientation == Orientation.Horizontal)
                {
                    return(flickDirection == DragDirection.Horizontal);
                }

                return(flickDirection == DragDirection.Vertical);
            }

            return(gesture.GestureType == KnownGesture.Pan);
        }