diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ExpanderDemo.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ExpanderDemo.axaml
new file mode 100644
index 00000000..c741d132
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ExpanderDemo.axaml
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ExpanderDemo.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ExpanderDemo.axaml.cs
new file mode 100644
index 00000000..1b4c88e7
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ExpanderDemo.axaml.cs
@@ -0,0 +1,10 @@
+namespace HandyControlDemo.UserControl;
+
+public partial class ExpanderDemo : Avalonia.Controls.UserControl
+{
+ public ExpanderDemo()
+ {
+ InitializeComponent();
+ }
+}
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Converters.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Converters.axaml
index f13a5203..f2a7c333 100644
--- a/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Converters.axaml
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Converters.axaml
@@ -6,5 +6,6 @@
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Expander.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Expander.axaml
new file mode 100644
index 00000000..d9f5ca90
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Expander.axaml
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml
index f47d8824..02ebeef9 100644
--- a/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml
@@ -33,6 +33,7 @@
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Tools/Converter/CornerRadiusSplitConverter.cs b/src/Avalonia/HandyControl_Avalonia/Tools/Converter/CornerRadiusSplitConverter.cs
new file mode 100644
index 00000000..a61232dd
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Tools/Converter/CornerRadiusSplitConverter.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Globalization;
+using Avalonia;
+using Avalonia.Data.Converters;
+
+namespace HandyControl.Tools.Converter;
+
+public class CornerRadiusSplitConverter : IValueConverter
+{
+ public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
+ {
+ if (value is not CornerRadius cornerRadius)
+ {
+ return value;
+ }
+
+ if (parameter is not string str)
+ {
+ return value;
+ }
+
+ string[] arr = str.Split(',');
+ if (arr.Length != 4)
+ {
+ return cornerRadius;
+ }
+
+ return new CornerRadius(
+ arr[0].Trim().Equals("1") ? cornerRadius.TopLeft : 0,
+ arr[1].Trim().Equals("1") ? cornerRadius.TopRight : 0,
+ arr[2].Trim().Equals("1") ? cornerRadius.BottomRight : 0,
+ arr[3].Trim().Equals("1") ? cornerRadius.BottomLeft : 0);
+ }
+
+ public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) =>
+ throw new NotImplementedException();
+}
diff --git a/src/Shared/HandyControl_Shared/Tools/Converter/CornerRadiusSplitConverter.cs b/src/Shared/HandyControl_Shared/Tools/Converter/CornerRadiusSplitConverter.cs
index 6923ee18..e57c6395 100644
--- a/src/Shared/HandyControl_Shared/Tools/Converter/CornerRadiusSplitConverter.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Converter/CornerRadiusSplitConverter.cs
@@ -9,21 +9,24 @@ public class CornerRadiusSplitConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
- if (value is CornerRadius cornerRadius)
+ if (value is not CornerRadius cornerRadius)
{
- if (parameter is string str)
- {
- var arr = str.Split(',');
- if (arr.Length != 4) return cornerRadius;
-
- return new CornerRadius(
- arr[0].Equals("1") ? cornerRadius.TopLeft : 0,
- arr[1].Equals("1") ? cornerRadius.TopRight : 0,
- arr[2].Equals("1") ? cornerRadius.BottomRight : 0,
- arr[3].Equals("1") ? cornerRadius.BottomLeft : 0);
- }
+ return value;
}
- return value;
+
+ if (parameter is not string str)
+ {
+ return value;
+ }
+
+ var arr = str.Split(',');
+ if (arr.Length != 4) return cornerRadius;
+
+ return new CornerRadius(
+ arr[0].Trim().Equals("1") ? cornerRadius.TopLeft : 0,
+ arr[1].Trim().Equals("1") ? cornerRadius.TopRight : 0,
+ arr[2].Trim().Equals("1") ? cornerRadius.BottomRight : 0,
+ arr[3].Trim().Equals("1") ? cornerRadius.BottomLeft : 0);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)