From 15e7e9348f5601995d0aebc2cd701c982246b441 Mon Sep 17 00:00:00 2001
From: NaBian <836904362@qq.com>
Date: Sun, 28 Sep 2025 21:44:03 +0800
Subject: [PATCH] feat: add avalonia AutoCompleteBox style.
---
.../Data/DemoInfo.json | 3 +-
.../Styles/AutoCompleteBoxDemo.axaml | 131 +++++++++
.../Styles/AutoCompleteBoxDemo.axaml.cs | 9 +
.../Controls/Attach/InfoElement.cs | 2 +-
.../Themes/Styles/AutoCompleteBox.axaml | 258 ++++++++++++++++++
.../Themes/Styles/MergedStyles.axaml | 1 +
.../Controls/Attach/InfoElement.cs | 3 +-
7 files changed, 404 insertions(+), 3 deletions(-)
create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml
create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml.cs
create mode 100644 src/Avalonia/HandyControl_Avalonia/Themes/Styles/AutoCompleteBox.axaml
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json b/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json
index ca4199f2..a9998037 100644
--- a/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json
@@ -15,6 +15,7 @@
[ "TextBlock", "TextBlockDemo", "Brush.TextBlock", "", "" ],
[ "NumericUpDown", "NumericUpDownDemo", "Brush.NumericListBox", "", "" ],
[ "TextBox", "TextBoxDemo", "Brush.TextBox", "", "" ],
+ [ "AutoCompleteBox", "AutoCompleteBoxDemo", "Brush.AutoComplete", "", "" ],
[ "ComboBox", "ComboBoxDemo", "Brush.ComboBox", "", "" ],
[ "Expander", "ExpanderDemo", "Brush.Expander", "", "" ],
[ "ProgressBar", "NativeProgressBarDemo", "Brush.ProgressBar", "", "" ],
@@ -24,7 +25,7 @@
[ "ListBox", "ListBoxDemo", "Brush.ListBox", "", "" ],
[ "Menu", "MenuDemo", "Brush.ContextMenu", "", "" ],
[ "Border", "BorderDemo", "Brush.BorderElement", "", "" ],
- [ "Label", "LabelDemo", "Brush.Label", "", "" ],
+ [ "Label", "LabelDemo", "Brush.Label", "", "" ]
]
},
{
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml
new file mode 100644
index 00000000..22686e93
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml.cs
new file mode 100644
index 00000000..f9383e70
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/AutoCompleteBoxDemo.axaml.cs
@@ -0,0 +1,9 @@
+namespace HandyControlDemo.UserControl;
+
+public partial class AutoCompleteBoxDemo : Avalonia.Controls.UserControl
+{
+ public AutoCompleteBoxDemo()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/Avalonia/HandyControl_Avalonia/Controls/Attach/InfoElement.cs b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/InfoElement.cs
index 20b2e535..53ea4c72 100644
--- a/src/Avalonia/HandyControl_Avalonia/Controls/Attach/InfoElement.cs
+++ b/src/Avalonia/HandyControl_Avalonia/Controls/Attach/InfoElement.cs
@@ -54,7 +54,7 @@ public class InfoElement
public static string GetRegexPattern(AvaloniaObject element) => element.GetValue(RegexPatternProperty);
public static readonly AttachedProperty ShowClearButtonProperty =
- AvaloniaProperty.RegisterAttached("ShowClearButton");
+ AvaloniaProperty.RegisterAttached("ShowClearButton", inherits: true);
public static void SetShowClearButton(AvaloniaObject element, bool value) =>
element.SetValue(ShowClearButtonProperty, value);
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/AutoCompleteBox.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/AutoCompleteBox.axaml
new file mode 100644
index 00000000..acc05f8c
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/AutoCompleteBox.axaml
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/MergedStyles.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/MergedStyles.axaml
index 9dd1f06b..8868b28b 100644
--- a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/MergedStyles.axaml
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/MergedStyles.axaml
@@ -48,6 +48,7 @@
+
diff --git a/src/Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs b/src/Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs
index ac78ab94..77299b16 100644
--- a/src/Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs
@@ -91,7 +91,8 @@ public class InfoElement : TitleElement
=> (string) element.GetValue(RegexPatternProperty);
public static readonly DependencyProperty ShowClearButtonProperty = DependencyProperty.RegisterAttached(
- "ShowClearButton", typeof(bool), typeof(InfoElement), new PropertyMetadata(ValueBoxes.FalseBox));
+ "ShowClearButton", typeof(bool), typeof(InfoElement),
+ new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.Inherits));
public static void SetShowClearButton(DependencyObject element, bool value)
=> element.SetValue(ShowClearButtonProperty, ValueBoxes.BooleanBox(value));