|
@@ -11,7 +11,7 @@ namespace Avalonia.Styling
|
|
|
/// <summary>
|
|
|
/// Base class for <see cref="Style"/> and <see cref="ControlTheme"/>.
|
|
|
/// </summary>
|
|
|
- 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)
|