mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-28 23:08:36 +08:00
完成 ArrowDecoratedBoxTheme
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using AtomUI.Controls.Utils;
|
||||
using AtomUI.Styling;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Templates;
|
||||
using Avalonia.Styling;
|
||||
|
||||
namespace AtomUI.Controls;
|
||||
|
||||
[ControlThemeProvider]
|
||||
public class ArrowDecoratedBoxTheme : ControlTheme
|
||||
{
|
||||
public const string DecoratorPart = "Part_Decorator";
|
||||
|
||||
public ArrowDecoratedBoxTheme() : base(typeof(ArrowDecoratedBox)) {}
|
||||
|
||||
protected override IControlTemplate BuildControlTemplate()
|
||||
{
|
||||
return new FuncControlTemplate<ArrowDecoratedBox>((box, scope) =>
|
||||
{
|
||||
var decorator = new Border()
|
||||
{
|
||||
Name = DecoratorPart
|
||||
};
|
||||
decorator.RegisterInNameScope(scope);
|
||||
|
||||
if (box.Child?.Parent is not null) {
|
||||
UIStructureUtils.ClearLogicalParentRecursive(box.Child, null);
|
||||
UIStructureUtils.ClearVisualParentRecursive(box.Child, null);
|
||||
}
|
||||
|
||||
CreateTemplateParentBinding(decorator, Border.BackgroundSizingProperty, ArrowDecoratedBox.BackgroundSizingProperty);
|
||||
CreateTemplateParentBinding(decorator, Border.BackgroundProperty, ArrowDecoratedBox.BackgroundProperty);
|
||||
CreateTemplateParentBinding(decorator, Border.CornerRadiusProperty, ArrowDecoratedBox.CornerRadiusProperty);
|
||||
CreateTemplateParentBinding(decorator, Border.ChildProperty, ArrowDecoratedBox.ChildProperty);
|
||||
CreateTemplateParentBinding(decorator, Border.PaddingProperty, ArrowDecoratedBox.PaddingProperty);
|
||||
|
||||
return decorator;
|
||||
});
|
||||
}
|
||||
|
||||
protected override void BuildStyles()
|
||||
{
|
||||
var commonStyle = new Style(selector => selector.Nesting());
|
||||
commonStyle.Add(ArrowDecoratedBox.BackgroundProperty, GlobalResourceKey.ColorBgContainer);
|
||||
commonStyle.Add(ArrowDecoratedBox.MinHeightProperty, GlobalResourceKey.ControlHeight);
|
||||
commonStyle.Add(ArrowDecoratedBox.PaddingProperty, ArrowDecoratedBoxResourceKey.Padding);
|
||||
commonStyle.Add(ArrowDecoratedBox.ArrowSizeProperty, ArrowDecoratedBoxResourceKey.ArrowSize);
|
||||
commonStyle.Add(ArrowDecoratedBox.CornerRadiusProperty, GlobalResourceKey.BorderRadius);
|
||||
Add(commonStyle);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user