From 378c5b020080f8c7c1eef40a8520203e05ed8142 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 10 Aug 2024 13:37:35 +0800 Subject: [PATCH] fix: make sure page count is properly calculated even if template is not loaded. --- demo/Ursa.Demo/Pages/PaginationDemo.axaml | 3 ++- src/Ursa/Controls/Pagination/Pagination.cs | 16 ++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/demo/Ursa.Demo/Pages/PaginationDemo.axaml b/demo/Ursa.Demo/Pages/PaginationDemo.axaml index 458a2e4..22d4ebc 100644 --- a/demo/Ursa.Demo/Pages/PaginationDemo.axaml +++ b/demo/Ursa.Demo/Pages/PaginationDemo.axaml @@ -30,7 +30,8 @@ TotalCount="600" /> - + diff --git a/src/Ursa/Controls/Pagination/Pagination.cs b/src/Ursa/Controls/Pagination/Pagination.cs index 0b5a9ae..4fa4c15 100644 --- a/src/Ursa/Controls/Pagination/Pagination.cs +++ b/src/Ursa/Controls/Pagination/Pagination.cs @@ -114,8 +114,9 @@ public class Pagination: TemplatedControl private int _pageCount; - public static readonly DirectProperty PageCountProperty = AvaloniaProperty.RegisterDirect( - nameof(PageCount), o => o.PageCount); + public static readonly DirectProperty PageCountProperty = + AvaloniaProperty.RegisterDirect( + nameof(PageCount), o => o.PageCount, (o, e) => o.PageCount = e); /// /// Page count. @@ -291,11 +292,14 @@ public class Pagination: TemplatedControl /// private void UpdateButtonsByCurrentPage(int? page) { - if (_buttonPanel is null) return; if (PageSize == 0) return; - - int? currentPage = CurrentPage; int pageCount = TotalCount / PageSize; + if (_buttonPanel is null) + { + SetCurrentValue(PageCountProperty, pageCount); + return; + } + int? currentPage = CurrentPage; int residue = TotalCount % PageSize; if (residue > 0) { @@ -360,7 +364,7 @@ public class Pagination: TemplatedControl } } - PageCount = pageCount; + SetCurrentValue(PageCountProperty, pageCount); SetCurrentValue(CurrentPageProperty, currentPage); if (_previousButton != null) _previousButton.IsEnabled = (CurrentPage ?? int.MaxValue) > 1; if (_nextButton != null) _nextButton.IsEnabled = (CurrentPage ?? 0) < PageCount;