From cfb39b986d2758878e10e3d92ce664206fd2b61c Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 21 Jul 2023 22:11:35 +0200 Subject: [PATCH] Added pagination --- .../Controls/Pagination/Pagination.cs | 172 ++++++++++++++++++ .../Pagination/Pagination.properties.cs | 38 ++++ .../Controls/Pagination/PaginationEllipsis.cs | 10 + .../Controls/Pagination/PaginationPage.cs | 39 ++++ .../Pagination/PaginationStyles.axaml | 80 ++++++++ src/Artemis.UI.Shared/Styles/Artemis.axaml | 27 ++- 6 files changed, 356 insertions(+), 10 deletions(-) create mode 100644 src/Artemis.UI.Shared/Controls/Pagination/Pagination.cs create mode 100644 src/Artemis.UI.Shared/Controls/Pagination/Pagination.properties.cs create mode 100644 src/Artemis.UI.Shared/Controls/Pagination/PaginationEllipsis.cs create mode 100644 src/Artemis.UI.Shared/Controls/Pagination/PaginationPage.cs create mode 100644 src/Artemis.UI.Shared/Controls/Pagination/PaginationStyles.axaml diff --git a/src/Artemis.UI.Shared/Controls/Pagination/Pagination.cs b/src/Artemis.UI.Shared/Controls/Pagination/Pagination.cs new file mode 100644 index 000000000..26352ee17 --- /dev/null +++ b/src/Artemis.UI.Shared/Controls/Pagination/Pagination.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Metadata; +using Avalonia.Controls.Primitives; +using Avalonia.Input; +using Avalonia.Interactivity; +using ReactiveUI; + +namespace Artemis.UI.Shared.Pagination; + +/// +/// Represents a pagination control that can be used to switch between pages. +/// +[TemplatePart("PART_PreviousButton", typeof(Button))] +[TemplatePart("PART_NextButton", typeof(Button))] +[TemplatePart("PART_PagesView", typeof(StackPanel))] +public partial class Pagination : TemplatedControl +{ + /// + public Pagination() + { + PropertyChanged += OnPropertyChanged; + } + + public Button? PreviousButton { get; set; } + public Button? NextButton { get; set; } + public StackPanel? PagesView { get; set; } + + /// + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + if (PreviousButton != null) + PreviousButton.Click -= PreviousButtonOnClick; + if (NextButton != null) + NextButton.Click -= NextButtonOnClick; + + PreviousButton = e.NameScope.Find + + + + + + + + + + + +