From 00d64d55a030bef7c52d2db5583c912880742d18 Mon Sep 17 00:00:00 2001
From: NaBian <836904362@qq.com>
Date: Sun, 1 Dec 2024 20:37:37 +0800
Subject: [PATCH] chore: add avalonia ToggleButton demo.
---
.../Styles/ToggleButtonDemoCtl.axaml | 602 ++++++++++++++
.../Styles/ToggleButtonDemoCtl.axaml.cs | 9 +
.../Controls/Attach/IconSwitchElement.cs | 35 +
.../Controls/Attach/StatusSwitchElement.cs | 23 +
.../Controls/Attach/ToggleButtonAttach.cs | 13 +
.../Themes/Basic/Converters.axaml | 2 +-
.../Themes/Styles/Border.axaml | 15 +
.../Themes/Styles/RadioButton.axaml | 171 +---
.../Themes/Styles/Style.axaml | 1 +
.../Themes/Styles/ToggleButton.axaml | 770 ++++++++++++++++++
.../Converter/Boolean2BooleanReConverter.cs | 28 -
.../Converter/BorderCircularClipConverter.cs | 30 +
.../HandyControl_Net_40/Themes/Theme.xaml | 15 +-
.../Styles/ToggleButtonDemoCtl.xaml | 62 +-
.../Styles/Base/ToggleButtonBaseStyle.xaml | 13 +-
.../Themes/Styles/ToggleButton.xaml | 2 +-
.../HandyControl_Shared/Themes/Theme.xaml | 15 +-
17 files changed, 1564 insertions(+), 242 deletions(-)
create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml
create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Controls/Attach/IconSwitchElement.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Controls/Attach/StatusSwitchElement.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Controls/Attach/ToggleButtonAttach.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Themes/Styles/ToggleButton.axaml
delete mode 100644 src/Avalonia/HandyControl_Avalonia/Tools/Converter/Boolean2BooleanReConverter.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Tools/Converter/BorderCircularClipConverter.cs
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml
new file mode 100644
index 00000000..01f09cc8
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml.cs
new file mode 100644
index 00000000..5010c713
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ToggleButtonDemoCtl.axaml.cs
@@ -0,0 +1,9 @@
+namespace HandyControlDemo.UserControl;
+
+public partial class ToggleButtonDemoCtl : Avalonia.Controls.UserControl
+{
+ public ToggleButtonDemoCtl()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/Avalonia/HandyControl_Avalonia/Controls/Attach/IconSwitchElement.cs b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/IconSwitchElement.cs
new file mode 100644
index 00000000..582f55ba
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/IconSwitchElement.cs
@@ -0,0 +1,35 @@
+using Avalonia;
+using Avalonia.Media;
+
+namespace HandyControl.Controls;
+
+public class IconSwitchElement
+{
+ public static readonly AttachedProperty GeometryProperty =
+ AvaloniaProperty.RegisterAttached("Geometry");
+
+ public static void SetGeometry(AvaloniaObject element, Geometry value) => element.SetValue(GeometryProperty, value);
+
+ public static Geometry GetGeometry(AvaloniaObject element) => element.GetValue(GeometryProperty);
+
+ public static readonly AttachedProperty WidthProperty =
+ AvaloniaProperty.RegisterAttached("Width", defaultValue: double.NaN);
+
+ public static void SetWidth(AvaloniaObject element, double value) => element.SetValue(WidthProperty, value);
+
+ public static double GetWidth(AvaloniaObject element) => element.GetValue(WidthProperty);
+
+ public static readonly AttachedProperty HeightProperty =
+ AvaloniaProperty.RegisterAttached("Height", defaultValue: double.NaN);
+
+ public static void SetHeight(AvaloniaObject element, double value) => element.SetValue(HeightProperty, value);
+ public static double GetHeight(AvaloniaObject element) => element.GetValue(HeightProperty);
+
+ public static readonly AttachedProperty GeometrySelectedProperty =
+ AvaloniaProperty.RegisterAttached("GeometrySelected");
+
+ public static void SetGeometrySelected(AvaloniaObject element, Geometry value) =>
+ element.SetValue(GeometrySelectedProperty, value);
+
+ public static Geometry GetGeometrySelected(AvaloniaObject element) => element.GetValue(GeometrySelectedProperty);
+}
diff --git a/src/Avalonia/HandyControl_Avalonia/Controls/Attach/StatusSwitchElement.cs b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/StatusSwitchElement.cs
new file mode 100644
index 00000000..6bede12a
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/StatusSwitchElement.cs
@@ -0,0 +1,23 @@
+using Avalonia;
+
+namespace HandyControl.Controls;
+
+public class StatusSwitchElement
+{
+ public static readonly AttachedProperty