private void UpdatePagesLayout(int startIndex) { if (ItemsPerPage == 0) { return; } if (VisiblePagesCount == 0) { VisiblePagesCount = 1; } if (TotalItems > 0) { double pagesCountD = Math.Ceiling((double)TotalItems / (double)ItemsPerPage); TotalPagesCount = (int)pagesCountD; Pages = new ObservableCollection <PageSelectorItem>(); if (TotalPagesCount > VisiblePagesCount) { int ss = startIndex; int currentVisiblePagesCount = TotalPagesCount - startIndex; if (currentVisiblePagesCount < VisiblePagesCount) { int t = VisiblePagesCount - currentVisiblePagesCount; ss = ss - t; } for (int i = ss; i < ss + VisiblePagesCount && i < TotalPagesCount; ++i) { PageSelectorItem page = new PageSelectorItem(i); Pages.Add(page); } } else // display all pages, since their count is less then max visible pages restriction parameter { for (int i = 0; i < TotalPagesCount; ++i) { PageSelectorItem page = new PageSelectorItem(i); Pages.Add(page); } } } else { Pages = new ObservableCollection <PageSelectorItem>(); } CurrentPageIndex = startIndex; MarkPageItems(); UpdateMoreItemsPlaceholder(); }
private void Button_Click(object sender, RoutedEventArgs e) { Button button = sender as Button; if (button == null) { return; } PageSelectorItem pageItem = button.DataContext as PageSelectorItem; if (pageItem != null) { int newPageIndex = pageItem.PageIndex; if (newPageIndex != CurrentPageIndex) { CurrentPageIndex = pageItem.PageIndex; MarkPageItems(); } } }