private void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) { if ((Math.Sign(e.Delta.Translation.Y) < 0 && this.SelectedIndex == this.Children.Count - 1)) { e.Complete(); return; } _current = _current ?? GetEligibleControl(e.Delta.Translation.Y); double deltaY = e.Delta.Translation.Y; double translateY = _current.GetTranslateY(); _lastDeltaSign = Math.Sign(deltaY); double y = Math.Max(GetTopBound(), translateY + deltaY); y = Math.Min(0, y); _current.TranslateY(y); }