From 94ee3367141c8841d3ca7abe3dd2fd4e365c543a Mon Sep 17 00:00:00 2001
From: NaBian <836904362@qq.com>
Date: Mon, 25 Aug 2025 23:14:42 +0800
Subject: [PATCH] feat: add avalonia basic ComboBox style.
---
.../Data/DemoInfo.json | 2 +-
.../UserControl/Styles/ComboBoxDemo.axaml | 101 ++++
.../UserControl/Styles/ComboBoxDemo.axaml.cs | 10 +
.../Common/InputElementDemoViewModel.cs | 23 +
.../Themes/Styles/ComboBox.axaml | 444 ++++++++++++++++++
.../Themes/Styles/TextBox.axaml | 6 +
.../HandyControl_Avalonia/Themes/Theme.axaml | 1 +
.../Themes/Styles/Base/ComboBoxBaseStyle.xaml | 4 +-
.../HandyControl_Net_40/Themes/Theme.xaml | 2 +-
.../Common/InputElementDemoViewModel.cs | 4 +-
.../Themes/Styles/Base/ComboBoxBaseStyle.xaml | 2 +-
.../HandyControl_Shared/Themes/Theme.xaml | 2 +-
12 files changed, 593 insertions(+), 8 deletions(-)
create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml
create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Themes/Styles/ComboBox.axaml
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json b/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json
index 38822a7d..da4764c2 100644
--- a/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json
@@ -15,7 +15,7 @@
[ "TextBlock", "TextBlockDemo", "Brush.TextBlock", "", "" ],
[ "NumericUpDown", "NumericUpDownDemo", "Brush.NumericListBox", "", "" ],
[ "TextBox", "TextBoxDemo", "Brush.TextBox", "", "" ],
- [ "ComboBox", "NativeComboBoxDemo", "Brush.ComboBox", "", "" ],
+ [ "ComboBox", "ComboBoxDemo", "Brush.ComboBox", "", "" ],
[ "Expander", "ExpanderDemo", "Brush.Expander", "", "" ],
[ "ProgressBar", "NativeProgressBarDemo", "Brush.ProgressBar", "", "" ],
[ "Calendar", "CalendarDemo", "Brush.Calendar", "", "" ],
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml
new file mode 100644
index 00000000..efe0338b
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml.cs
new file mode 100644
index 00000000..2a7ecb08
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ComboBoxDemo.axaml.cs
@@ -0,0 +1,10 @@
+namespace HandyControlDemo.UserControl;
+
+public partial class ComboBoxDemo : Avalonia.Controls.UserControl
+{
+ public ComboBoxDemo()
+ {
+ InitializeComponent();
+ }
+}
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Common/InputElementDemoViewModel.cs b/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Common/InputElementDemoViewModel.cs
index b2be4b02..3fe76999 100644
--- a/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Common/InputElementDemoViewModel.cs
+++ b/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Common/InputElementDemoViewModel.cs
@@ -1,5 +1,9 @@
+using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
+using System.Globalization;
using CommunityToolkit.Mvvm.ComponentModel;
+using HandyControlDemo.Properties.Langs;
+using HandyControlDemo.Tools.Converter;
namespace HandyControlDemo.ViewModel;
@@ -20,4 +24,23 @@ public partial class InputElementDemoViewModel : ObservableValidator
[ObservableProperty] private double? _doubleValue1;
[ObservableProperty] private double? _doubleValue2;
+
+ [ObservableProperty] private IList? _dataList;
+
+ public InputElementDemoViewModel()
+ {
+ DataList = GetComboBoxDemoDataList();
+ }
+
+ private static List GetComboBoxDemoDataList()
+ {
+ var converter = new StringRepeatConverter();
+ var list = new List();
+ for (int i = 1; i <= 9; i++)
+ {
+ list.Add($"{converter.Convert(Lang.Text, null!, i, CultureInfo.CurrentCulture)}{i}");
+ }
+
+ return list;
+ }
}
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ComboBox.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ComboBox.axaml
new file mode 100644
index 00000000..8e69bbbc
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ComboBox.axaml
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/TextBox.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/TextBox.axaml
index dab0bc03..3dc7586c 100644
--- a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/TextBox.axaml
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/TextBox.axaml
@@ -48,6 +48,12 @@
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}" />
+
+
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml
index 303486ef..04fbaf48 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml
@@ -2,7 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="clr-namespace:HandyControl.Controls"
xmlns:system="clr-namespace:System;assembly=mscorlib">
-
+
@@ -478,7 +478,7 @@
-
+
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
index 2ed58151..b07b6204 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
@@ -5620,7 +5620,7 @@
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Common/InputElementDemoViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Common/InputElementDemoViewModel.cs
index f5135270..7572054b 100644
--- a/src/Shared/HandyControlDemo_Shared/ViewModel/Common/InputElementDemoViewModel.cs
+++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Common/InputElementDemoViewModel.cs
@@ -108,12 +108,12 @@ public class InputElementDemoViewModel : ViewModelBase
SelectedDataList = DataList.Where((t, i) => i % 2 == 0).ToList();
}
- private void Search(string key)
+ private static void Search(string key)
{
Growl.Info(key);
}
- private List GetComboBoxDemoDataList()
+ private static List GetComboBoxDemoDataList()
{
var converter = new StringRepeatConverter();
var list = new List();
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml
index 54191f44..c86dac35 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml
@@ -517,7 +517,7 @@
-
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Theme.xaml b/src/Shared/HandyControl_Shared/Themes/Theme.xaml
index 653fdb41..9489abc8 100644
--- a/src/Shared/HandyControl_Shared/Themes/Theme.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Theme.xaml
@@ -5662,7 +5662,7 @@
-
+