public async void ScrollToSwitchCurrentCatalog(CatalogDirection dir) { if (IsLoading) { return; } var value = GetCatalogByDirction(dir); if (value != null) { SetCurrentContent(value); } else { if (IsLoadingCatalogData) { ToastHelper.ShowMessage("目录数据加载中,请稍后"); return; } if (CurrentBook.CatalogList == null) { ToastHelper.ShowMessage("没有目录数据"); return; } await Task.Delay(10); NavigationService.NavigateTo(typeof(CatalogPage)); } }
/// <summary> /// 根据方向获取目录 /// </summary> /// <param name="dir"></param> /// <returns></returns> public BookCatalog GetCatalogByDirction(CatalogDirection dir) { if (CurrentCatalog == null || CurrentBook.CatalogList == null || CurrentBook.CatalogList.Count == 0) { return(null); } var temp = CurrentBook.CatalogList.FirstOrDefault(p => p.CatalogUrl == CurrentCatalog.CatalogUrl); if (temp == null && dir == CatalogDirection.Next) { return(null); } if (temp == null && dir == CatalogDirection.Current) { return(CurrentCatalog); } var index = CurrentBook.CatalogList.IndexOf(temp); switch (dir) { case CatalogDirection.Current: return(temp); case CatalogDirection.Next: if (index < CurrentBook.CatalogList.Count - 1) { return(CurrentBook.CatalogList[index + 1]); } break; case CatalogDirection.Pre: if (index > 0) { return(CurrentBook.CatalogList[index - 1]); } break; } return(null); }
private async void SwitchCatalog(CatalogDirection dir) { try { if (IsLoadingContent) { return; } IsLoadingContent = true; await Task.Delay(0); var vm = (BookContentPageViewModel)DataContext; vm.ScrollToSwitchCurrentCatalog(dir); } catch (Exception e) { Console.WriteLine(e); } finally { IsLoadingContent = false; } }
/// <summary> /// 根据方向获取目录数据 /// </summary> /// <param name="dir"></param> /// <param name="isShowLoading"></param> /// <returns></returns> public async Task <Tuple <List <string>, string, BookCatalog> > GetCatalogDataByDirection(CatalogDirection dir, bool isShowLoading = false) { var catalog = GetCatalogByDirction(dir); if (catalog == null) { return(null); } var value = await GetCatalogContent(catalog, isShowLoading); return(new Tuple <List <string>, string, BookCatalog>(value.Item1, value.Item2, catalog)); }