/// <summary>Computes <see cref="PageSize"/> and <see cref="PageCount"/></summary> /// <returns></returns> public async Task ResetAsync() { // Create base query ITableQueryAsync <T> baseQuery = _db.Table <T>(); if (_queryFunc != null) { baseQuery = _queryFunc(baseQuery); } // Count items ItemCount = await baseQuery.CountAsync().ConfigureAwait(false); RaisePropertyChanged(() => PageCount); }
/// <summary> /// Update page item according to current page. /// </summary> /// <returns></returns> public override async Task UpdateCurrentPageItemsAsync() { // Create base query ITableQueryAsync <T> baseQuery = _db.Table <T>(); if (_queryFunc != null) { baseQuery = _queryFunc(baseQuery); } // Count items _itemCount = await baseQuery.CountAsync().ConfigureAwait(false); // Fetch and add items int skip = (CurrentPage - 1) * PageSize; ITableQueryAsync <T> fetchQuery = baseQuery.Skip(skip).Take(PageSize); IEnumerable <T> newItems = await fetchQuery.ToListAsync().ConfigureAwait(false); using (CurrentPageItems.SuspendChangeNotifications()) ((ICollection <T>)CurrentPageItems).ReplaceRange(newItems); }