public void ScrollTo(object item, object group, ScrollToPosition position, bool animated) { VerticalCalendarScrollToRequestedEventArgs e = new VerticalCalendarScrollToRequestedEventArgs { Item = item, Group = group, Position = position, Animated = animated }; if (this.scrollToRequested.Count == 0) { scrollToDelayed = e; } else { this.scrollToRequested.ForEach(y => y.Invoke(this, e)); } }
private void Element_ScrollToRequested(object sender, VerticalCalendarScrollToRequestedEventArgs e) { int position = this.Adapter.PositionFromViewModel(e.Item as VerticalCalendarRowViewModel); if (e.Animated) { this.LayoutManager.SmoothScrollToPosition(this.Control, new RecyclerView.State(), position); } else { if (e.Position == ScrollToPosition.Start) { this.LayoutManager.ScrollToPosition(position); } else { this.LayoutManager.ScrollToPositionWithOffset(position, (int)this.Context.ToPixels(350)); } } }
private void Element_ScrollToRequested(object sender, VerticalCalendarScrollToRequestedEventArgs e) { int section, row; if (this.Element.IsGroupingEnabled) { section = this.Element.ItemsSource.IndexOf(e.Group); row = (this.Element.ItemsSource.ElementAt(section) as IEnumerable <object>).IndexOf(e.Item); } else { section = 0; row = this.Element.ItemsSource.IndexOf(e.Item); } UITableViewScrollPosition position = 0; switch (e.Position) { case ScrollToPosition.Center: position = UITableViewScrollPosition.Middle; break; case ScrollToPosition.End: position = UITableViewScrollPosition.Bottom; break; case ScrollToPosition.MakeVisible: position = UITableViewScrollPosition.None; break; case ScrollToPosition.Start: position = UITableViewScrollPosition.Top; break; } this.scrollTo = () => this.Control.ScrollToRow(NSIndexPath.FromRowSection(row, section), position, e.Animated); }