public void RefreshPaging(SearchSession session) { PagingStackPanel.Children.Clear(); var lastpage = session.LoadedPages?.LastOrDefault(); if (lastpage == null) { return; } LoadImages(lastpage.ImageItems); StartDownloadShowImages(); for (var index = 0; index < session.LoadedPages.Count; index++) { var page = session.LoadedPages[index]; var hasnextpagestr = page.HasNextPage ? "有" : "无"; var button = new Button { Width = 32, Height = 32, Margin = new Thickness(3), FontSize = 16, Content = index + 1, Template = (ControlTemplate)FindResource("MoeButtonControlTemplate"), ToolTip = $"最后真实页码:{page.LastRealPageIndex}\r\n" + $"预加载下一页图片数量:{page.PreLoadNextPageItems.Count}\r\n" + $"是否有下一页:{hasnextpagestr}" }; button.Click += (sender, args) => { for (var i = 0; i < PagingStackPanel.Children.Count; i++) { var btn = (Button)PagingStackPanel.Children[i]; VisualStateManager.GoToState(btn, button.Equals(btn) ? "CurrentPage" : "NotCurrentPage", true); if (button.Equals(btn)) { session.CurrentPageIndex = i; } } PagingScrollViewer.ScrollToTop(); LoadImages(page.ImageItems); StartDownloadShowImages(); }; if (index == session.LoadedPages.Count - 1) { button.Loaded += (s, a) => VisualStateManager.GoToState(button, "CurrentPage", true); } PagingStackPanel.Children.Add(button); } PagingScrollViewer.ScrollToRightEnd(); VisualStateManager.GoToState(this, session.LoadedPages.Last().HasNextPage ? nameof(HasNextPageState) : nameof(NoNextPageState), true); NewPageButtonNumTextBlock.Text = $"{session.LoadedPages.Count + 1}"; }
private void PagingStackPanelOnMouseWheel(object sender, MouseWheelEventArgs e) { if (e.Delta > 0) { PagingScrollViewer.LineLeft(); } else if (e.Delta < 0) { PagingScrollViewer.LineRight(); } }