From 324171bbf613e751bb73d95e927820b258e0eda4 Mon Sep 17 00:00:00 2001 From: chinboy Date: Mon, 3 Mar 2025 12:09:38 +0800 Subject: [PATCH] Fix AddOnDecoratedBox theme Token Bindings bug --- .../AddOnDecoratedBoxTheme.cs | 26 +++++---- .../AddOnDecoratedInnerBoxTheme.cs | 53 +++++++++++-------- 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedBoxTheme.cs b/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedBoxTheme.cs index 75c0c536f..6a69118dd 100644 --- a/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedBoxTheme.cs +++ b/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedBoxTheme.cs @@ -87,11 +87,14 @@ internal class AddOnDecoratedBoxTheme : BaseControlTheme BindingMode.Default, ObjectConverters.IsNotNull); leftAddOnContentPresenter.RegisterInNameScope(scope); - - decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(leftAddOnContentPresenter, ContentPresenter.BackgroundProperty, - AddOnDecoratedBoxTokenKey.AddonBg)); - decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(leftAddOnContentPresenter, ContentPresenter.BorderBrushProperty, - SharedTokenKey.ColorBorder)); + + RegisterTokenResourceBindings(decoratedBox, () => + { + decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(leftAddOnContentPresenter, ContentPresenter.BackgroundProperty, + AddOnDecoratedBoxTokenKey.AddonBg)); + decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(leftAddOnContentPresenter, ContentPresenter.BorderBrushProperty, + SharedTokenKey.ColorBorder)); + }); Grid.SetColumn(leftAddOnContentPresenter, 0); layout.Children.Add(leftAddOnContentPresenter); @@ -130,11 +133,14 @@ internal class AddOnDecoratedBoxTheme : BaseControlTheme AddOnDecoratedBox.RightAddOnProperty, BindingMode.Default, ObjectConverters.IsNotNull); - - decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(rightAddOnContentPresenter, ContentPresenter.BackgroundProperty, - AddOnDecoratedBoxTokenKey.AddonBg)); - decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(rightAddOnContentPresenter, ContentPresenter.BorderBrushProperty, - SharedTokenKey.ColorBorder)); + + RegisterTokenResourceBindings(decoratedBox, () => + { + decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(rightAddOnContentPresenter, ContentPresenter.BackgroundProperty, + AddOnDecoratedBoxTokenKey.AddonBg)); + decoratedBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(rightAddOnContentPresenter, ContentPresenter.BorderBrushProperty, + SharedTokenKey.ColorBorder)); + }); rightAddOnContentPresenter.RegisterInNameScope(scope); layout.Children.Add(rightAddOnContentPresenter); diff --git a/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedInnerBoxTheme.cs b/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedInnerBoxTheme.cs index a24337daa..893f650ea 100644 --- a/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedInnerBoxTheme.cs +++ b/src/AtomUI.Controls/AddOnDecoratedBox/AddOnDecoratedInnerBoxTheme.cs @@ -105,9 +105,12 @@ internal class AddOnDecoratedInnerBoxTheme : BaseControlTheme Name = LeftAddOnLayoutPart, Orientation = Orientation.Horizontal }; - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(addLayout, - StackPanel.SpacingProperty, - SharedTokenKey.PaddingXXS)); + RegisterTokenResourceBindings(addOnDecoratedInnerBox, () => + { + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(addLayout, + StackPanel.SpacingProperty, + SharedTokenKey.PaddingXXS)); + }); addLayout.RegisterInNameScope(scope); var leftAddOnContentPresenter = new ContentPresenter @@ -154,10 +157,15 @@ internal class AddOnDecoratedInnerBoxTheme : BaseControlTheme Name = RightAddOnLayoutPart, Orientation = Orientation.Horizontal }; - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(addLayout, - StackPanel.SpacingProperty, - SharedTokenKey.PaddingXXS)); + addLayout.RegisterInNameScope(scope); + + RegisterTokenResourceBindings(addOnDecoratedInnerBox, () => + { + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(addLayout, + StackPanel.SpacingProperty, + SharedTokenKey.PaddingXXS)); + }); BuildRightAddOnItems(addOnDecoratedInnerBox, addLayout, scope); @@ -195,21 +203,24 @@ internal class AddOnDecoratedInnerBoxTheme : BaseControlTheme Icon = closeIcon }; - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(clearButton, - IconButton.IconHeightProperty, - SharedTokenKey.IconSize)); - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(clearButton, - IconButton.IconWidthProperty, - SharedTokenKey.IconSize)); - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(closeIcon, - Icon.NormalFilledBrushProperty, - SharedTokenKey.ColorTextQuaternary)); - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(closeIcon, - Icon.ActiveFilledBrushProperty, - SharedTokenKey.ColorTextTertiary)); - addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(closeIcon, - Icon.SelectedFilledBrushProperty, - SharedTokenKey.ColorText)); + RegisterTokenResourceBindings(addOnDecoratedInnerBox, () => + { + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(clearButton, + IconButton.IconHeightProperty, + SharedTokenKey.IconSize)); + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(clearButton, + IconButton.IconWidthProperty, + SharedTokenKey.IconSize)); + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(closeIcon, + Icon.NormalFilledBrushProperty, + SharedTokenKey.ColorTextQuaternary)); + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(closeIcon, + Icon.ActiveFilledBrushProperty, + SharedTokenKey.ColorTextTertiary)); + addOnDecoratedInnerBox.AddTokenBindingDisposable(TokenResourceBinder.CreateTokenBinding(closeIcon, + Icon.SelectedFilledBrushProperty, + SharedTokenKey.ColorText)); + }); clearButton.RegisterInNameScope(scope); CreateTemplateParentBinding(clearButton, Visual.IsVisibleProperty,