diff --git a/src/AtomUI.Controls/Input/SearchEdit.cs b/src/AtomUI.Controls/Input/SearchEdit.cs index 1ec849251..0e185401e 100644 --- a/src/AtomUI.Controls/Input/SearchEdit.cs +++ b/src/AtomUI.Controls/Input/SearchEdit.cs @@ -25,6 +25,9 @@ public class SearchEdit : LineEdit public static readonly StyledProperty SearchButtonTextProperty = AvaloniaProperty.Register(nameof(SearchButtonText)); + public static readonly StyledProperty SearchButtonLoadingProperty = AvaloniaProperty.Register( + nameof(SearchButtonLoading)); + public SearchEditButtonStyle SearchButtonStyle { get => GetValue(SearchButtonStyleProperty); @@ -37,8 +40,14 @@ public class SearchEdit : LineEdit set => SetValue(SearchButtonTextProperty, value); } + public bool SearchButtonLoading + { + get => GetValue(SearchButtonLoadingProperty); + set => SetValue(SearchButtonLoadingProperty, value); + } + #endregion - + #region 公共事件定义 public static readonly RoutedEvent SearchButtonClickEvent = @@ -51,7 +60,7 @@ public class SearchEdit : LineEdit } #endregion - + private IDisposable? _borderThicknessDisposable; protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) @@ -81,6 +90,7 @@ public class SearchEdit : LineEdit internal void NotifySearchButtonClicked() { + if (SearchButtonLoading) return; var eventArgs = new RoutedEventArgs(SearchButtonClickEvent, this); RaiseEvent(eventArgs); } diff --git a/src/AtomUI.Controls/Input/SearchEditDecoratedBox.cs b/src/AtomUI.Controls/Input/SearchEditDecoratedBox.cs index d00a5ff19..6c071b0fe 100644 --- a/src/AtomUI.Controls/Input/SearchEditDecoratedBox.cs +++ b/src/AtomUI.Controls/Input/SearchEditDecoratedBox.cs @@ -18,6 +18,9 @@ internal class SearchEditDecoratedBox : AddOnDecoratedBox public static readonly StyledProperty SearchButtonTextProperty = SearchEdit.SearchButtonTextProperty.AddOwner(); + public static readonly StyledProperty SearchButtonLoadingProperty = AvaloniaProperty.Register( + nameof(SearchButtonLoading)); + public SearchEditButtonStyle SearchButtonStyle { get => GetValue(SearchButtonStyleProperty); @@ -29,6 +32,12 @@ internal class SearchEditDecoratedBox : AddOnDecoratedBox get => GetValue(SearchButtonTextProperty); set => SetValue(SearchButtonTextProperty, value); } + + public bool SearchButtonLoading + { + get => GetValue(SearchButtonLoadingProperty); + set => SetValue(SearchButtonLoadingProperty, value); + } #endregion diff --git a/src/AtomUI.Controls/Input/Themes/SearchEditDecoratedBoxTheme.axaml b/src/AtomUI.Controls/Input/Themes/SearchEditDecoratedBoxTheme.axaml index e0004a8ae..2e392f48d 100644 --- a/src/AtomUI.Controls/Input/Themes/SearchEditDecoratedBoxTheme.axaml +++ b/src/AtomUI.Controls/Input/Themes/SearchEditDecoratedBoxTheme.axaml @@ -41,6 +41,7 @@ IsEnabled="{TemplateBinding IsEnabled}" Icon="{atom:IconProvider SearchOutlined}" BackgroundSizing="OuterBorderEdge" + IsLoading="{TemplateBinding SearchButtonLoading}" Content="{TemplateBinding SearchButtonText}" SizeType="{TemplateBinding SizeType}"/> diff --git a/src/AtomUI.Controls/Input/Themes/SearchEditTheme.axaml b/src/AtomUI.Controls/Input/Themes/SearchEditTheme.axaml index d9bbcc466..e96497b26 100644 --- a/src/AtomUI.Controls/Input/Themes/SearchEditTheme.axaml +++ b/src/AtomUI.Controls/Input/Themes/SearchEditTheme.axaml @@ -23,7 +23,8 @@ RightAddOnTemplate="{TemplateBinding RightAddOnTemplate}" RightAddOnBorderThickness="{TemplateBinding BorderThickness}" SearchButtonStyle="{TemplateBinding SearchButtonStyle}" - SearchButtonText="{TemplateBinding SearchButtonText}"> + SearchButtonText="{TemplateBinding SearchButtonText}" + SearchButtonLoading="{TemplateBinding SearchButtonLoading}">