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;