|
|
@ -11,7 +11,7 @@ namespace Avalonia.Styling |
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// Base class for <see cref="Style"/> and <see cref="ControlTheme"/>.
|
|
|
/// Base class for <see cref="Style"/> and <see cref="ControlTheme"/>.
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
|
public abstract class StyleBase : AvaloniaObject, IStyle, IResourceProvider |
|
|
public abstract class StyleBase : AvaloniaObject, IStyle, IResourceProvider, IAddChild, IAddChild<IStyle>, IAddChild<SetterBase> |
|
|
{ |
|
|
{ |
|
|
private IResourceHost? _owner; |
|
|
private IResourceHost? _owner; |
|
|
private StyleChildren? _children; |
|
|
private StyleChildren? _children; |
|
|
@ -72,6 +72,25 @@ namespace Avalonia.Styling |
|
|
public void Add(SetterBase setter) => Setters.Add(setter); |
|
|
public void Add(SetterBase setter) => Setters.Add(setter); |
|
|
public void Add(IStyle style) => Children.Add(style); |
|
|
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 event EventHandler? OwnerChanged; |
|
|
|
|
|
|
|
|
public bool TryGetResource(object key, ThemeVariant? themeVariant, out object? result) |
|
|
public bool TryGetResource(object key, ThemeVariant? themeVariant, out object? result) |
|
|
|