diff --git a/src/AtomUI.Controls/Buttons/IconButtonTheme.cs b/src/AtomUI.Controls/Buttons/IconButtonTheme.cs index e89b4c087..eff48cd95 100644 --- a/src/AtomUI.Controls/Buttons/IconButtonTheme.cs +++ b/src/AtomUI.Controls/Buttons/IconButtonTheme.cs @@ -4,7 +4,6 @@ using AtomUI.Media; using AtomUI.Theme; using AtomUI.Theme.Styling; using Avalonia.Animation; -using Avalonia.Controls; using Avalonia.Controls.Presenters; using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; @@ -28,7 +27,6 @@ internal class IconButtonTheme : BaseControlTheme { return new FuncControlTemplate((button, scope) => { - BuildInstanceStyles(button); var iconContent = new ContentPresenter { Name = IconContentPart, @@ -85,14 +83,13 @@ internal class IconButtonTheme : BaseControlTheme } commonStyle.Add(enableHoverStyle); - Add(commonStyle); - } - - protected override void BuildInstanceStyles(Control control) - { - var iconStyle = new Style(selector => selector.Name(IconContentPart).Child().OfType()); + + var iconStyle = new Style(selector => selector.Nesting().Template().Name(IconContentPart).Descendant().OfType()); + iconStyle.Add(Layoutable.HorizontalAlignmentProperty, HorizontalAlignment.Center); iconStyle.Add(Layoutable.VerticalAlignmentProperty, VerticalAlignment.Center); - control.Styles.Add(iconStyle); + + commonStyle.Add(iconStyle); + Add(commonStyle); } } \ No newline at end of file diff --git a/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButton.cs b/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButton.cs index 2cc835fa0..8f1f22e87 100644 --- a/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButton.cs +++ b/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButton.cs @@ -1,19 +1,12 @@ -using System.Reactive.Disposables; -using AtomUI.IconPkg; -using AtomUI.Theme; +using AtomUI.IconPkg; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; -using Avalonia.LogicalTree; namespace AtomUI.Controls; -internal class PickerClearUpButton : TemplatedControl, - ITokenResourceConsumer +internal class PickerClearUpButton : TemplatedControl { - CompositeDisposable? ITokenResourceConsumer.TokenBindingsDisposable => _tokenBindingsDisposable; - private CompositeDisposable? _tokenBindingsDisposable; - public event EventHandler? ClearRequest; public static readonly StyledProperty IsInClearModeProperty = @@ -39,23 +32,10 @@ internal class PickerClearUpButton : TemplatedControl, protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - this.RunThemeTokenBindingActions(); _clearButton = e.NameScope.Get(PickerClearUpButtonTheme.ClearButtonPart); if (_clearButton is not null) { _clearButton.Click += (sender, args) => { ClearRequest?.Invoke(this, EventArgs.Empty); }; } } - - protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e) - { - base.OnAttachedToLogicalTree(e); - _tokenBindingsDisposable = new CompositeDisposable(); - } - - protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e) - { - base.OnDetachedFromLogicalTree(e); - this.DisposeTokenBindings(); - } } \ No newline at end of file diff --git a/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButtonTheme.cs b/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButtonTheme.cs index e8eb42640..f292e7967 100644 --- a/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButtonTheme.cs +++ b/src/AtomUI.Controls/Internal/InfoPickerInput/PickerClearUpButtonTheme.cs @@ -26,8 +26,6 @@ internal class PickerClearUpButtonTheme : BaseControlTheme { return new FuncControlTemplate((pickerClearUpButton, scope) => { - ResetTokenResourceBindings(pickerClearUpButton); - BuildInstanceStyles(pickerClearUpButton); var container = new Panel(); BuildClearButton(container, scope); BuildClockIconContent(container, scope); @@ -71,14 +69,11 @@ internal class PickerClearUpButtonTheme : BaseControlTheme clearUpButtonStyle.Add(IconButton.ActiveIconColorProperty, SharedTokenKey.ColorTextQuaternary); clearUpButtonStyle.Add(IconButton.SelectedIconColorProperty, SharedTokenKey.ColorText); Add(clearUpButtonStyle); - } - - protected override void BuildInstanceStyles(Control control) - { - var iconStyle = new Style(selector => selector.Name(InfoIconContentPart).Child().OfType()); + + var iconStyle = new Style(selector => selector.Nesting().Template().Name(InfoIconContentPart).Descendant().OfType()); iconStyle.Add(Icon.WidthProperty, SharedTokenKey.IconSize); iconStyle.Add(Icon.HeightProperty, SharedTokenKey.IconSize); iconStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorTextQuaternary); - control.Styles.Add(iconStyle); + Add(iconStyle); } } \ No newline at end of file diff --git a/src/AtomUI.Controls/Internal/InfoPickerInput/RangeInfoPickerInput.cs b/src/AtomUI.Controls/Internal/InfoPickerInput/RangeInfoPickerInput.cs index b75c3abac..2393433da 100644 --- a/src/AtomUI.Controls/Internal/InfoPickerInput/RangeInfoPickerInput.cs +++ b/src/AtomUI.Controls/Internal/InfoPickerInput/RangeInfoPickerInput.cs @@ -1,6 +1,5 @@ using AtomUI.Controls.Utils; using AtomUI.IconPkg; -using AtomUI.Theme; using Avalonia; using Avalonia.Animation; using Avalonia.Controls; @@ -88,7 +87,6 @@ public abstract class RangeInfoPickerInput : InfoPickerInput protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - this.RunThemeTokenBindingActions(); _secondaryInfoInputBox = e.NameScope.Get(RangeInfoPickerInputTheme.SecondaryInfoInputBoxPart); _rangePickerIndicator = e.NameScope.Get(RangeInfoPickerInputTheme.RangePickerIndicatorPart); _rangePickerArrow = e.NameScope.Get(RangeInfoPickerInputTheme.RangePickerArrowPart); diff --git a/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs b/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs index 711f78020..ed73d7541 100644 --- a/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs +++ b/src/AtomUI.Controls/PopupConfirm/PopupConfirmContainerTheme.cs @@ -142,37 +142,6 @@ internal class PopupConfirmContainerTheme : BaseControlTheme return buttonLayout; } - protected override void BuildInstanceStyles(Control control) - { - { - var iconStyle = new Style(selector => selector.Name(IconContentPart).Child().OfType()); - iconStyle.Add(Layoutable.WidthProperty, SharedTokenKey.IconSizeLG); - iconStyle.Add(Layoutable.HeightProperty, SharedTokenKey.IconSizeLG); - iconStyle.Add(Layoutable.VerticalAlignmentProperty, VerticalAlignment.Top); - control.Styles.Add(iconStyle); - } - var infoStatusStyle = new Style(selector => selector - .PropertyEquals(PopupConfirmContainer.ConfirmStatusProperty, - PopupConfirmStatus.Info) - .Descendant().Name(IconContentPart).Child().OfType()); - infoStatusStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorPrimary); - control.Styles.Add(infoStatusStyle); - - var warningStatusStyle = new Style(selector => selector - .PropertyEquals(PopupConfirmContainer.ConfirmStatusProperty, - PopupConfirmStatus.Warning) - .Descendant().Name(IconContentPart).Child().OfType()); - warningStatusStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorWarning); - control.Styles.Add(warningStatusStyle); - - var errorStatusStyle = new Style(selector => selector - .PropertyEquals(PopupConfirmContainer.ConfirmStatusProperty, - PopupConfirmStatus.Error) - .Descendant().Name(IconContentPart).Child().OfType()); - errorStatusStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorError); - control.Styles.Add(errorStatusStyle); - } - protected override void BuildStyles() { var commonStyle = new Style(selector => selector.Nesting()); @@ -202,5 +171,38 @@ internal class PopupConfirmContainerTheme : BaseControlTheme commonStyle.Add(buttonContainerStyle); Add(commonStyle); + + BuildInfoIconStyle(); + } + + private void BuildInfoIconStyle() + { + { + var iconStyle = new Style(selector => selector.Name(IconContentPart).Descendant().OfType()); + iconStyle.Add(Layoutable.WidthProperty, SharedTokenKey.IconSizeLG); + iconStyle.Add(Layoutable.HeightProperty, SharedTokenKey.IconSizeLG); + iconStyle.Add(Layoutable.VerticalAlignmentProperty, VerticalAlignment.Top); + Add(iconStyle); + } + var infoStatusStyle = new Style(selector => selector + .PropertyEquals(PopupConfirmContainer.ConfirmStatusProperty, + PopupConfirmStatus.Info) + .Descendant().Name(IconContentPart).Descendant().OfType()); + infoStatusStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorPrimary); + Add(infoStatusStyle); + + var warningStatusStyle = new Style(selector => selector + .PropertyEquals(PopupConfirmContainer.ConfirmStatusProperty, + PopupConfirmStatus.Warning) + .Descendant().Name(IconContentPart).Descendant().OfType()); + warningStatusStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorWarning); + Add(warningStatusStyle); + + var errorStatusStyle = new Style(selector => selector + .PropertyEquals(PopupConfirmContainer.ConfirmStatusProperty, + PopupConfirmStatus.Error) + .Descendant().Name(IconContentPart).Descendant().OfType()); + errorStatusStyle.Add(Icon.NormalFilledBrushProperty, SharedTokenKey.ColorError); + Add(errorStatusStyle); } } \ No newline at end of file