From 26cb5f9436b100342848974e24598b7788a8f999 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Wed, 26 Apr 2023 02:03:07 +0800 Subject: [PATCH] feat: start pagination. --- src/Ursa/Controls/Pagination/Pagination.cs | 135 +++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/src/Ursa/Controls/Pagination/Pagination.cs b/src/Ursa/Controls/Pagination/Pagination.cs index 3834606..e7b47c9 100644 --- a/src/Ursa/Controls/Pagination/Pagination.cs +++ b/src/Ursa/Controls/Pagination/Pagination.cs @@ -1,8 +1,143 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; +using Avalonia.Interactivity; +using Avalonia.Styling; namespace Ursa.Controls; +[TemplatePart(PART_PreviousButton, typeof(Button))] +[TemplatePart(PART_NextButton, typeof(Button))] +[TemplatePart(PART_ButtonPanel, typeof(StackPanel))] 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"; + private Button? _previousButton; + private Button? _nextButton; + private StackPanel? _buttonPanel; + + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + base.OnApplyTemplate(e); + if (_previousButton != null) _previousButton.Click -= OnButtonClick; + if (_nextButton != null) _nextButton.Click -= OnButtonClick; + _previousButton = e.NameScope.Find