From 27e344950ad2874384f7f9b24fc6963d89ff24cb Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 3 Jul 2023 11:49:11 +0800 Subject: [PATCH] feat: add progress ring. --- .../Pages/ProgressBarDemo.axaml | 17 +++- src/Semi.Avalonia/Controls/ProgressBar.axaml | 83 +++++++++++++++++++ .../Converters/PositionToAngleConverter.cs | 27 ++++++ 3 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 src/Semi.Avalonia/Converters/PositionToAngleConverter.cs diff --git a/demo/Semi.Avalonia.Demo/Pages/ProgressBarDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ProgressBarDemo.axaml index 8148e2e..71d6b2d 100644 --- a/demo/Semi.Avalonia.Demo/Pages/ProgressBarDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/ProgressBarDemo.axaml @@ -8,12 +8,27 @@ d:DesignWidth="800" mc:Ignorable="d"> + + + Value="{Binding #slider.Value}" /> @@ -326,4 +327,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Converters/PositionToAngleConverter.cs b/src/Semi.Avalonia/Converters/PositionToAngleConverter.cs new file mode 100644 index 0000000..1fd9f7a --- /dev/null +++ b/src/Semi.Avalonia/Converters/PositionToAngleConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Globalization; +using Avalonia.Data.Converters; + +namespace Semi.Avalonia.Converters; + +public class PositionToAngleConverter: IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is double d) + { + return d * 3.6; + } + + return 0; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is double d) + { + return d / 3.6; + } + return 0; + } +} \ No newline at end of file