예제 #1
0
 public static Task NavigateToEndAsync <T>(this IPagination <T> @this)
 {
     if (@this == null)
     {
         throw new ArgumentNullException(nameof(@this));
     }
     return(@this.NavigateToAsync(@this.Count - 1));
 }
예제 #2
0
        public static Task NavigateAsync <T>(this IPagination <T> @this, int offset, NavigationOrigin origin = NavigationOrigin.Current, NavigationDirection direction = NavigationDirection.Forward)
        {
            if (@this == null)
            {
                throw new ArgumentNullException(nameof(@this));
            }
            if (offset < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(offset));
            }

            int offsetStart;

            switch (origin)
            {
            case NavigationOrigin.Start:
                offsetStart = 0;
                break;

            case NavigationOrigin.Current:
                offsetStart = @this.CurrentIndex;
                break;

            case NavigationOrigin.End:
                offsetStart = @this.Count - 1;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(origin), origin, null);
            }

            if (direction == NavigationDirection.Backward)
            {
                offset *= -1;
            }

            return(@this.NavigateToAsync(offsetStart + offset));
        }