diff --git a/external/XamlX b/external/XamlX index cbfec32876..83567b8a50 160000 --- a/external/XamlX +++ b/external/XamlX @@ -1 +1 @@ -Subproject commit cbfec32876a79e855bd49da034214bbf2bf35b13 +Subproject commit 83567b8a50bbf612a0b1420a3dc6d8e8ebee2399 diff --git a/src/Avalonia.Base/Styling/StyleBase.cs b/src/Avalonia.Base/Styling/StyleBase.cs index 3b12fda731..038fc7c5c3 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 { private IResourceHost? _owner; private StyleChildren? _children; @@ -72,6 +72,21 @@ 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."); + } + } + public event EventHandler? OwnerChanged; public bool TryGetResource(object key, ThemeVariant? themeVariant, out object? result)