Browse Source

Add IAddChild implementation too StyleBase

pull/18800/head
Wiesław Šoltés 1 year ago
parent
commit
40c3ef4f58
  1. 21
      src/Avalonia.Base/Styling/StyleBase.cs

21
src/Avalonia.Base/Styling/StyleBase.cs

@ -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, IAddChild<IStyle>, IAddChild<SetterBase>
{
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<SetterBase>.AddChild(SetterBase setter) => Setters.Add(setter);
void IAddChild<IStyle>.AddChild(IStyle style) => Children.Add(style);
public event EventHandler? OwnerChanged;
public bool TryGetResource(object key, ThemeVariant? themeVariant, out object? result)

Loading…
Cancel
Save