mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-29 07:16:33 +08:00
feat: 实现SearchEdit Loading状态
This commit is contained in:
@@ -25,6 +25,9 @@ public class SearchEdit : LineEdit
|
||||
public static readonly StyledProperty<string> SearchButtonTextProperty =
|
||||
AvaloniaProperty.Register<SearchEdit, string>(nameof(SearchButtonText));
|
||||
|
||||
public static readonly StyledProperty<bool> SearchButtonLoadingProperty = AvaloniaProperty.Register<SearchEdit, bool>(
|
||||
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<RoutedEventArgs> 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);
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ internal class SearchEditDecoratedBox : AddOnDecoratedBox
|
||||
public static readonly StyledProperty<string> SearchButtonTextProperty =
|
||||
SearchEdit.SearchButtonTextProperty.AddOwner<SearchEditDecoratedBox>();
|
||||
|
||||
public static readonly StyledProperty<bool> SearchButtonLoadingProperty = AvaloniaProperty.Register<SearchEditDecoratedBox, bool>(
|
||||
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
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
IsEnabled="{TemplateBinding IsEnabled}"
|
||||
Icon="{atom:IconProvider SearchOutlined}"
|
||||
BackgroundSizing="OuterBorderEdge"
|
||||
IsLoading="{TemplateBinding SearchButtonLoading}"
|
||||
Content="{TemplateBinding SearchButtonText}"
|
||||
SizeType="{TemplateBinding SizeType}"/>
|
||||
</Grid>
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
RightAddOnTemplate="{TemplateBinding RightAddOnTemplate}"
|
||||
RightAddOnBorderThickness="{TemplateBinding BorderThickness}"
|
||||
SearchButtonStyle="{TemplateBinding SearchButtonStyle}"
|
||||
SearchButtonText="{TemplateBinding SearchButtonText}">
|
||||
SearchButtonText="{TemplateBinding SearchButtonText}"
|
||||
SearchButtonLoading="{TemplateBinding SearchButtonLoading}">
|
||||
<atom:TextBoxInnerBox
|
||||
Name="{x:Static atom:TextBoxThemeConstants.TextBoxInnerBoxPart}"
|
||||
Cursor="Ibeam"
|
||||
|
||||
Reference in New Issue
Block a user