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;