From 40c3ef4f58edd07a28324d5c4fc9c8a2097ea196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Tue, 6 May 2025 12:04:14 +0200 Subject: [PATCH] Add IAddChild implementation too StyleBase --- src/Avalonia.Base/Styling/StyleBase.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Base/Styling/StyleBase.cs b/src/Avalonia.Base/Styling/StyleBase.cs index 3b12fda731..fc293f4bda 100644 --- a/src/Avalonia.Base/Styling/StyleBase.cs +++ b/src/Avalonia.Base/Styling/StyleBase.cs @@ -11,7 +11,7 @@ namespace Avalonia.Styling /// /// Base class for and . /// - public abstract class StyleBase : AvaloniaObject, IStyle, IResourceProvider + public abstract class StyleBase : AvaloniaObject, IStyle, IResourceProvider, IAddChild, IAddChild, IAddChild { private IResourceHost? _owner; private StyleChildren? _children; @@ -72,6 +72,25 @@ namespace Avalonia.Styling public void Add(SetterBase setter) => Setters.Add(setter); public void Add(IStyle style) => Children.Add(style); + void IAddChild.AddChild(object child) + { + switch (child) + { + case SetterBase setter: + Setters.Add(setter); + break; + case IStyle style: + Children.Add(style); + break; + default: + throw new InvalidOperationException($"Cannot add {child.GetType()} to a style."); + } + } + + void IAddChild.AddChild(SetterBase setter) => Setters.Add(setter); + + void IAddChild.AddChild(IStyle style) => Children.Add(style); + public event EventHandler? OwnerChanged; public bool TryGetResource(object key, ThemeVariant? themeVariant, out object? result)