Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
        }