Пример #1
0
        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}";
        }
Пример #2
0
 private void PagingStackPanelOnMouseWheel(object sender, MouseWheelEventArgs e)
 {
     if (e.Delta > 0)
     {
         PagingScrollViewer.LineLeft();
     }
     else if (e.Delta < 0)
     {
         PagingScrollViewer.LineRight();
     }
 }