From 157d22a8f979d9defc7e1d2cb78f3220a65eebdc Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Sat, 24 Feb 2024 16:49:31 +0800 Subject: [PATCH 1/4] feat: implement RefreshContainer. --- .../Pages/RefreshContainerDemo.axaml | 20 ++++++++-- .../Pages/RefreshContainerDemo.axaml.cs | 38 +++++++++++++++++-- .../Controls/RefreshContainer.axaml | 23 +++++------ 3 files changed, 63 insertions(+), 18 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml index de3762c..4bb484e 100644 --- a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml @@ -4,12 +4,24 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages" d:DesignHeight="450" d:DesignWidth="800" + x:DataType="pages:RefreshContainerDemoViewModel" + x:CompileBindings="True" mc:Ignorable="d"> - - - + + + + - + diff --git a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs index 0add79b..7e13123 100644 --- a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs @@ -1,14 +1,46 @@ -using Avalonia; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; using Avalonia.Controls; -using Avalonia.Interactivity; -using Avalonia.Markup.Xaml; +using CommunityToolkit.Mvvm.ComponentModel; namespace Semi.Avalonia.Demo.Pages; public partial class RefreshContainerDemo : UserControl { + private RefreshContainerDemoViewModel _viewModel; + public RefreshContainerDemo() { InitializeComponent(); + + _viewModel = new RefreshContainerDemoViewModel(); + + DataContext = _viewModel; + } + + private async void RefreshContainerPage_RefreshRequested(object? sender, RefreshRequestedEventArgs e) + { + var deferral = e.GetDeferral(); + + await _viewModel.AddToTop(); + + deferral.Complete(); + } +} + +public class RefreshContainerDemoViewModel : ObservableObject +{ + public ObservableCollection Items { get; } + + public RefreshContainerDemoViewModel() + { + Items = new ObservableCollection(Enumerable.Range(1, 200).Select(i => $"Item {i}")); + } + + public async Task AddToTop() + { + await Task.Delay(1000); + Items.Insert(0, $"Item {200 - Items.Count}"); } } \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/RefreshContainer.axaml b/src/Semi.Avalonia/Controls/RefreshContainer.axaml index 238c078..48e2d0a 100644 --- a/src/Semi.Avalonia/Controls/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Controls/RefreshContainer.axaml @@ -30,19 +30,20 @@ + + + - - - - - + - + \ No newline at end of file From 0d68df3711f31ee40fad9a2da302c420a7a9d665 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Sat, 24 Feb 2024 18:11:28 +0800 Subject: [PATCH 2/4] misc: rename resources. --- src/Semi.Avalonia/Controls/RefreshContainer.axaml | 10 +++++----- src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml | 4 ++-- src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml | 4 ++-- src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Semi.Avalonia/Controls/RefreshContainer.axaml b/src/Semi.Avalonia/Controls/RefreshContainer.axaml index 48e2d0a..586f122 100644 --- a/src/Semi.Avalonia/Controls/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Controls/RefreshContainer.axaml @@ -28,14 +28,14 @@ - - + + diff --git a/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml index 9be9ad3..a77eb29 100644 --- a/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml index 397a7bb..e67b05b 100644 --- a/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml index 9a5161c..cd6148d 100644 --- a/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml @@ -1,3 +1,4 @@ - M14.2 3.78966C9.66551 2.57466 5.00465 5.26561 3.78964 9.80007C3.12066 12.2967 3.63433 14.8301 4.99177 16.8102C5.46019 17.4935 5.28601 18.4271 4.60273 18.8955C3.91945 19.364 2.98581 19.1898 2.51739 18.5065C0.685557 15.8344 -0.0134454 12.4023 0.891867 9.02361C2.5357 2.88875 8.84157 -0.751945 14.9764 0.891885C21.1113 2.53572 24.752 8.84159 23.1082 14.9765C22.8937 15.7767 22.0712 16.2515 21.271 16.0371C20.4708 15.8227 19.996 15.0002 20.2104 14.2C21.4254 9.66553 18.7344 5.00467 14.2 3.78966Z + M14.2 3.78966C9.66551 2.57466 5.00465 5.26561 3.78964 9.80007C3.12066 12.2967 3.63433 14.8301 4.99177 16.8102C5.46019 17.4935 5.28601 18.4271 4.60273 18.8955C3.91945 19.364 2.98581 19.1898 2.51739 18.5065C0.685557 15.8344 -0.0134454 12.4023 0.891867 9.02361C2.5357 2.88875 8.84157 -0.751945 14.9764 0.891885C21.1113 2.53572 24.752 8.84159 23.1082 14.9765C22.8937 15.7767 22.0712 16.2515 21.271 16.0371C20.4708 15.8227 19.996 15.0002 20.2104 14.2C21.4254 9.66553 18.7344 5.00467 14.2 3.78966Z + 24 \ No newline at end of file From 30081a1717f30a7d21bfac1282293469676042b7 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:47:56 +0800 Subject: [PATCH 3/4] fix: icon shaking. --- src/Semi.Avalonia/Controls/RefreshContainer.axaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Semi.Avalonia/Controls/RefreshContainer.axaml b/src/Semi.Avalonia/Controls/RefreshContainer.axaml index 586f122..48497c7 100644 --- a/src/Semi.Avalonia/Controls/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Controls/RefreshContainer.axaml @@ -32,10 +32,15 @@ From d33f38ea7019d79481b4c8de3ec91fd010a1257c Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:16:53 +0800 Subject: [PATCH 4/4] misc: delete useless PathGeometry. --- src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml index cd6148d..e41e85f 100644 --- a/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml @@ -1,4 +1,3 @@ - M14.2 3.78966C9.66551 2.57466 5.00465 5.26561 3.78964 9.80007C3.12066 12.2967 3.63433 14.8301 4.99177 16.8102C5.46019 17.4935 5.28601 18.4271 4.60273 18.8955C3.91945 19.364 2.98581 19.1898 2.51739 18.5065C0.685557 15.8344 -0.0134454 12.4023 0.891867 9.02361C2.5357 2.88875 8.84157 -0.751945 14.9764 0.891885C21.1113 2.53572 24.752 8.84159 23.1082 14.9765C22.8937 15.7767 22.0712 16.2515 21.271 16.0371C20.4708 15.8227 19.996 15.0002 20.2104 14.2C21.4254 9.66553 18.7344 5.00467 14.2 3.78966Z 24 \ No newline at end of file