diff --git a/demo/Ursa.Demo/Pages/PaginationDemo.axaml b/demo/Ursa.Demo/Pages/PaginationDemo.axaml
new file mode 100644
index 0000000..bd14888
--- /dev/null
+++ b/demo/Ursa.Demo/Pages/PaginationDemo.axaml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
diff --git a/demo/Ursa.Demo/Pages/PaginationDemo.axaml.cs b/demo/Ursa.Demo/Pages/PaginationDemo.axaml.cs
new file mode 100644
index 0000000..3418732
--- /dev/null
+++ b/demo/Ursa.Demo/Pages/PaginationDemo.axaml.cs
@@ -0,0 +1,15 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using Ursa.Demo.ViewModels;
+
+namespace Ursa.Demo.Pages;
+
+public partial class PaginationDemo : UserControl
+{
+ public PaginationDemo()
+ {
+ InitializeComponent();
+ this.DataContext = new PaginationDemoViewModel();
+ }
+}
\ No newline at end of file
diff --git a/demo/Ursa.Demo/ViewModels/PaginationDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/PaginationDemoViewModel.cs
new file mode 100644
index 0000000..e85fd3e
--- /dev/null
+++ b/demo/Ursa.Demo/ViewModels/PaginationDemoViewModel.cs
@@ -0,0 +1,10 @@
+using System.Collections.ObjectModel;
+using Avalonia.Collections;
+using CommunityToolkit.Mvvm.ComponentModel;
+
+namespace Ursa.Demo.ViewModels;
+
+public class PaginationDemoViewModel: ObservableObject
+{
+ public AvaloniaList PageSizes { get; set; } = new() { 10, 20, 50, 100 };
+}
\ No newline at end of file
diff --git a/demo/Ursa.Demo/Views/MainWindow.axaml b/demo/Ursa.Demo/Views/MainWindow.axaml
index 9ba93b8..76a2f17 100644
--- a/demo/Ursa.Demo/Views/MainWindow.axaml
+++ b/demo/Ursa.Demo/Views/MainWindow.axaml
@@ -35,6 +35,9 @@
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/Pagination.axaml b/src/Ursa.Themes.Semi/Controls/Pagination.axaml
new file mode 100644
index 0000000..923c133
--- /dev/null
+++ b/src/Ursa.Themes.Semi/Controls/Pagination.axaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/_index.axaml b/src/Ursa.Themes.Semi/Controls/_index.axaml
index 7c08f47..48da0db 100644
--- a/src/Ursa.Themes.Semi/Controls/_index.axaml
+++ b/src/Ursa.Themes.Semi/Controls/_index.axaml
@@ -5,6 +5,7 @@
+
diff --git a/src/Ursa/Controls/Pagination/Pagination.cs b/src/Ursa/Controls/Pagination/Pagination.cs
index e7b47c9..2c58f4f 100644
--- a/src/Ursa/Controls/Pagination/Pagination.cs
+++ b/src/Ursa/Controls/Pagination/Pagination.cs
@@ -1,4 +1,5 @@
using Avalonia;
+using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.Metadata;
using Avalonia.Controls.Primitives;
@@ -10,14 +11,17 @@ namespace Ursa.Controls;
[TemplatePart(PART_PreviousButton, typeof(Button))]
[TemplatePart(PART_NextButton, typeof(Button))]
[TemplatePart(PART_ButtonPanel, typeof(StackPanel))]
+[TemplatePart(PART_SizeChangerComboBox, typeof(ComboBox))]
public class Pagination: TemplatedControl
{
public const string PART_PreviousButton = "PART_PreviousButton";
public const string PART_NextButton = "PART_NextButton";
public const string PART_ButtonPanel = "PART_ButtonPanel";
+ public const string PART_SizeChangerComboBox = "PART_SizeChangerComboBox";
private Button? _previousButton;
private Button? _nextButton;
private StackPanel? _buttonPanel;
+ private ComboBox? _sizeChangerComboBox;
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{
@@ -27,8 +31,11 @@ public class Pagination: TemplatedControl
_previousButton = e.NameScope.Find