From baafebd4f09fb148369dd42e9b067efd49d6b52d Mon Sep 17 00:00:00 2001 From: chinboy Date: Tue, 4 Mar 2025 08:18:44 +0800 Subject: [PATCH] Refactor ProgressBar --- .../Notifications/NotificationCardTheme.cs | 2 -- .../PopupConfirmContainerTheme.cs | 16 ++++--------- .../AbstractCircleProgressTheme.cs | 19 ++++++++------- .../ProgressBar/AbstractLineProgressTheme.cs | 24 +++++++++---------- 4 files changed, 28 insertions(+), 33 deletions(-) diff --git a/src/AtomUI.Controls/Notifications/NotificationCardTheme.cs b/src/AtomUI.Controls/Notifications/NotificationCardTheme.cs index 22e6929c0..193e15210 100644 --- a/src/AtomUI.Controls/Notifications/NotificationCardTheme.cs +++ b/src/AtomUI.Controls/Notifications/NotificationCardTheme.cs @@ -2,12 +2,10 @@ using AtomUI.IconPkg.AntDesign; using AtomUI.MotionScene; using AtomUI.Theme; -using AtomUI.Theme.Data; using AtomUI.Theme.Styling; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Presenters; -using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.Data; using Avalonia.Data.Converters; diff --git a/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs b/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs index 4f3391ca1..711f78020 100644 --- a/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs +++ b/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs @@ -1,6 +1,5 @@ using AtomUI.IconPkg; using AtomUI.Theme; -using AtomUI.Theme.Data; using AtomUI.Theme.Styling; using Avalonia; using Avalonia.Controls; @@ -46,16 +45,6 @@ internal class PopupConfirmContainerTheme : BaseControlTheme BuildInstanceStyles(popupConfirmContainer); - RegisterTokenResourceBindings(popupConfirmContainer, () => - { - popupConfirmContainer.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(mainLayout, - Layoutable.MinWidthProperty, - PopupConfirmTokenKey.PopupMinWidth)); - popupConfirmContainer.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(mainLayout, - Layoutable.MinHeightProperty, - PopupConfirmTokenKey.PopupMinHeight)); - }); - return mainLayout; }); } @@ -188,6 +177,11 @@ internal class PopupConfirmContainerTheme : BaseControlTheme { var commonStyle = new Style(selector => selector.Nesting()); + var mainLayoutStyle = new Style(selector => selector.Nesting().Template().Name(MainLayoutPart)); + mainLayoutStyle.Add(Layoutable.MinWidthProperty, PopupConfirmTokenKey.PopupMinWidth); + mainLayoutStyle.Add(Layoutable.MinHeightProperty, PopupConfirmTokenKey.PopupMinHeight); + commonStyle.Add(mainLayoutStyle); + var iconContentPresenter = new Style(selector => selector.Nesting().Template().Name(IconContentPart)); iconContentPresenter.Add(Layoutable.MarginProperty, PopupConfirmTokenKey.IconMargin); commonStyle.Add(iconContentPresenter); diff --git a/src/AtomUI.Controls/ProgressBar/AbstractCircleProgressTheme.cs b/src/AtomUI.Controls/ProgressBar/AbstractCircleProgressTheme.cs index 36daaa33a..3f4faeb9b 100644 --- a/src/AtomUI.Controls/ProgressBar/AbstractCircleProgressTheme.cs +++ b/src/AtomUI.Controls/ProgressBar/AbstractCircleProgressTheme.cs @@ -31,10 +31,6 @@ internal class AbstractCircleProgressTheme : AbstractProgressBarTheme exceptionCompletedIcon.VerticalAlignment = VerticalAlignment.Center; exceptionCompletedIcon.RegisterInNameScope(scope); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(exceptionCompletedIcon, Icon.NormalFilledBrushProperty, - SharedTokenKey.ColorError)); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(exceptionCompletedIcon, Icon.DisabledFilledBrushProperty, - SharedTokenKey.ControlItemBgActiveDisabled)); var successCompletedIcon = AntDesignIconPackage.CheckOutlined(); successCompletedIcon.Name = SuccessCompletedIconPart; @@ -42,10 +38,6 @@ internal class AbstractCircleProgressTheme : AbstractProgressBarTheme successCompletedIcon.VerticalAlignment = VerticalAlignment.Center; successCompletedIcon.RegisterInNameScope(scope); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(successCompletedIcon, Icon.NormalFilledBrushProperty, - SharedTokenKey.ColorSuccess)); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(successCompletedIcon, Icon.DisabledFilledBrushProperty, - SharedTokenKey.ControlItemBgActiveDisabled)); container.Children.Add(exceptionCompletedIcon); container.Children.Add(successCompletedIcon); @@ -54,6 +46,17 @@ internal class AbstractCircleProgressTheme : AbstractProgressBarTheme protected override void BuildStyles() { base.BuildStyles(); + + // 完成图标样式 + var exceptionCompletedIconStyle = new Style(selector => selector.Nesting().Template().Name(ExceptionCompletedIconPart)); + exceptionCompletedIconStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorError); + exceptionCompletedIconStyle.Add(Icon.DisabledFilledBrushProperty, SharedTokenKey.ControlItemBgActiveDisabled); + Add(exceptionCompletedIconStyle); + + var successCompletedIconStyle = new Style(selector => selector.Nesting().Template().Name(SuccessCompletedIconPart)); + successCompletedIconStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorSuccess); + successCompletedIconStyle.Add(Icon.DisabledFilledBrushProperty, SharedTokenKey.ControlItemBgActiveDisabled); + Add(successCompletedIconStyle); var commonStyle = new Style(selector => selector.Nesting()); commonStyle.Add(AbstractCircleProgress.CircleMinimumTextFontSizeProperty, diff --git a/src/AtomUI.Controls/ProgressBar/AbstractLineProgressTheme.cs b/src/AtomUI.Controls/ProgressBar/AbstractLineProgressTheme.cs index 7903eee7f..90f4469ef 100644 --- a/src/AtomUI.Controls/ProgressBar/AbstractLineProgressTheme.cs +++ b/src/AtomUI.Controls/ProgressBar/AbstractLineProgressTheme.cs @@ -30,24 +30,12 @@ internal class AbstractLineProgressTheme : AbstractProgressBarTheme exceptionCompletedIcon.HorizontalAlignment = HorizontalAlignment.Left; exceptionCompletedIcon.RegisterInNameScope(scope); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(exceptionCompletedIcon, - Icon.NormalFilledBrushProperty, - SharedTokenKey.ColorError)); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(exceptionCompletedIcon, - Icon.DisabledFilledBrushProperty, - SharedTokenKey.ControlItemBgActiveDisabled)); var successCompletedIcon = AntDesignIconPackage.CheckCircleFilled(); successCompletedIcon.Name = SuccessCompletedIconPart; successCompletedIcon.HorizontalAlignment = HorizontalAlignment.Left; successCompletedIcon.RegisterInNameScope(scope); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(successCompletedIcon, - Icon.NormalFilledBrushProperty, - SharedTokenKey.ColorSuccess)); - progressBar.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(successCompletedIcon, - Icon.DisabledFilledBrushProperty, - SharedTokenKey.ControlItemBgActiveDisabled)); container.Children.Add(exceptionCompletedIcon); container.Children.Add(successCompletedIcon); @@ -60,6 +48,18 @@ internal class AbstractLineProgressTheme : AbstractProgressBarTheme commonStyle.Add(AbstractLineProgress.LineProgressPaddingProperty, ProgressBarTokenKey.LineProgressPadding); commonStyle.Add(AbstractLineProgress.LineExtraInfoMarginProperty, ProgressBarTokenKey.LineExtraInfoMargin); Add(commonStyle); + + // 完成图标样式 + var exceptionCompletedIconStyle = new Style(selector => selector.Nesting().Template().Name(ExceptionCompletedIconPart)); + exceptionCompletedIconStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorError); + exceptionCompletedIconStyle.Add(Icon.DisabledFilledBrushProperty, SharedTokenKey.ControlItemBgActiveDisabled); + Add(exceptionCompletedIconStyle); + + var successCompletedIconStyle = new Style(selector => selector.Nesting().Template().Name(SuccessCompletedIconPart)); + successCompletedIconStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorSuccess); + successCompletedIconStyle.Add(Icon.DisabledFilledBrushProperty, SharedTokenKey.ControlItemBgActiveDisabled); + Add(successCompletedIconStyle); + BuildSizeTypeStyle(); }