diff --git a/src/Avalonia.Base/Styling/ISetter.cs b/src/Avalonia.Base/Styling/ISetter.cs
deleted file mode 100644
index 22af90b446..0000000000
--- a/src/Avalonia.Base/Styling/ISetter.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using Avalonia.Metadata;
-
-namespace Avalonia.Styling
-{
- ///
- /// Represents a setter for a .
- ///
- [NotClientImplementable]
- public interface ISetter
- {
- ///
- /// Instances a setter on a control.
- ///
- /// The style which contains the setter.
- /// The control.
- /// An .
- ///
- /// This method should return an which can be used to apply
- /// the setter to the specified control.
- ///
- ISetterInstance Instance(IStyleInstance styleInstance, StyledElement target);
- }
-}
diff --git a/src/Avalonia.Base/Styling/ISetterInstance.cs b/src/Avalonia.Base/Styling/ISetterInstance.cs
index 4a65d6deeb..f8a7e7d346 100644
--- a/src/Avalonia.Base/Styling/ISetterInstance.cs
+++ b/src/Avalonia.Base/Styling/ISetterInstance.cs
@@ -3,7 +3,7 @@
namespace Avalonia.Styling
{
///
- /// Represents an that has been instanced on a control.
+ /// Represents a that has been instanced on a control.
///
[Unstable]
public interface ISetterInstance
diff --git a/src/Avalonia.Base/Styling/ISetterValue.cs b/src/Avalonia.Base/Styling/ISetterValue.cs
index 0fd245a429..800d8275b5 100644
--- a/src/Avalonia.Base/Styling/ISetterValue.cs
+++ b/src/Avalonia.Base/Styling/ISetterValue.cs
@@ -3,13 +3,13 @@
namespace Avalonia.Styling
{
///
- /// Customizes the behavior of a class when added as a value to an .
+ /// Customizes the behavior of a class when added as a value to a .
///
public interface ISetterValue
{
///
/// Notifies that the object has been added as a setter value.
///
- void Initialize(ISetter setter);
+ void Initialize(SetterBase setter);
}
}
diff --git a/src/Avalonia.Base/Styling/Setter.cs b/src/Avalonia.Base/Styling/Setter.cs
index 9b009be6d2..e5b2bed738 100644
--- a/src/Avalonia.Base/Styling/Setter.cs
+++ b/src/Avalonia.Base/Styling/Setter.cs
@@ -14,7 +14,7 @@ namespace Avalonia.Styling
/// A is used to set a value on a
/// depending on a condition.
///
- public class Setter : ISetter, IValueEntry, ISetterInstance, IAnimationSetter
+ public class Setter : SetterBase, IValueEntry, ISetterInstance, IAnimationSetter
{
private object? _value;
private DirectPropertySetterInstance? _direct;
@@ -66,7 +66,7 @@ namespace Avalonia.Styling
void IValueEntry.Unsubscribe() { }
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = TrimmingMessages.ImplicitTypeConvertionSupressWarningMessage)]
- ISetterInstance ISetter.Instance(IStyleInstance instance, StyledElement target)
+ internal override ISetterInstance Instance(IStyleInstance instance, StyledElement target)
{
if (target is not AvaloniaObject ao)
throw new InvalidOperationException("Don't know how to instance a style on this type.");
diff --git a/src/Avalonia.Base/Styling/SetterBase.cs b/src/Avalonia.Base/Styling/SetterBase.cs
new file mode 100644
index 0000000000..24cd525130
--- /dev/null
+++ b/src/Avalonia.Base/Styling/SetterBase.cs
@@ -0,0 +1,12 @@
+namespace Avalonia.Styling
+{
+ ///
+ /// Represents the base class for value setters.
+ ///
+ public abstract class SetterBase
+ {
+ internal abstract ISetterInstance Instance(
+ IStyleInstance styleInstance,
+ StyledElement target);
+ }
+}
diff --git a/src/Avalonia.Base/Styling/StyleBase.cs b/src/Avalonia.Base/Styling/StyleBase.cs
index 7dfa516bce..318e8d6890 100644
--- a/src/Avalonia.Base/Styling/StyleBase.cs
+++ b/src/Avalonia.Base/Styling/StyleBase.cs
@@ -16,7 +16,7 @@ namespace Avalonia.Styling
private IResourceHost? _owner;
private StyleChildren? _children;
private IResourceDictionary? _resources;
- private List? _setters;
+ private List? _setters;
private List? _animations;
private StyleInstance? _sharedInstance;
@@ -60,7 +60,7 @@ namespace Avalonia.Styling
}
}
- public IList Setters => _setters ??= new List();
+ public IList Setters => _setters ??= new();
public IList Animations => _animations ??= new List();
bool IResourceNode.HasResources => _resources?.Count > 0;
@@ -69,7 +69,7 @@ namespace Avalonia.Styling
internal bool HasChildren => _children?.Count > 0;
internal bool HasSettersOrAnimations => _setters?.Count > 0 || _animations?.Count > 0;
- public void Add(ISetter setter) => Setters.Add(setter);
+ public void Add(SetterBase setter) => Setters.Add(setter);
public void Add(IStyle style) => Children.Add(style);
public event EventHandler? OwnerChanged;
diff --git a/src/Avalonia.Controls/ContextMenu.cs b/src/Avalonia.Controls/ContextMenu.cs
index 97a8c6fe97..39a98bd48a 100644
--- a/src/Avalonia.Controls/ContextMenu.cs
+++ b/src/Avalonia.Controls/ContextMenu.cs
@@ -285,7 +285,7 @@ namespace Avalonia.Controls
}
}
- void ISetterValue.Initialize(ISetter setter)
+ void ISetterValue.Initialize(SetterBase setter)
{
// ContextMenu can be assigned to the ContextMenu property in a setter. This overrides
// the behavior defined in Control which requires controls to be wrapped in a .
diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs
index fcd607a707..13e3978ca6 100644
--- a/src/Avalonia.Controls/Control.cs
+++ b/src/Avalonia.Controls/Control.cs
@@ -213,7 +213,7 @@ namespace Avalonia.Controls
bool IDataTemplateHost.IsDataTemplatesInitialized => _dataTemplates != null;
///
- void ISetterValue.Initialize(ISetter setter)
+ void ISetterValue.Initialize(SetterBase setter)
{
if (setter is Setter s && s.Property == ContextFlyoutProperty)
{
diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs
index e509d47932..3edc458fd2 100644
--- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs
+++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathTransformer.cs
@@ -125,7 +125,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
var selfType = context.ParentNodes().OfType().First().Type.GetClrType();
// When using self bindings with setters we need to change target type to resolved selector type.
- if (context.GetAvaloniaTypes().ISetter.IsAssignableFrom(selfType))
+ if (context.GetAvaloniaTypes().SetterBase.IsAssignableFrom(selfType))
{
selfType = context.ParentNodes().OfType().First().TargetType.GetClrType();
}
diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs
index c5c3cdd123..d160d4a277 100644
--- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs
+++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs
@@ -104,7 +104,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
public IXamlType TextDecorationCollection { get; }
public IXamlType TextDecorations { get; }
public IXamlType TextTrimming { get; }
- public IXamlType ISetter { get; }
+ public IXamlType SetterBase { get; }
public IXamlType IStyle { get; }
public IXamlType StyleInclude { get; }
public IXamlType ResourceInclude { get; }
@@ -244,7 +244,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
TextDecorationCollection = cfg.TypeSystem.GetType("Avalonia.Media.TextDecorationCollection");
TextDecorations = cfg.TypeSystem.GetType("Avalonia.Media.TextDecorations");
TextTrimming = cfg.TypeSystem.GetType("Avalonia.Media.TextTrimming");
- ISetter = cfg.TypeSystem.GetType("Avalonia.Styling.ISetter");
+ SetterBase = cfg.TypeSystem.GetType("Avalonia.Styling.SetterBase");
IStyle = cfg.TypeSystem.GetType("Avalonia.Styling.IStyle");
StyleInclude = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.Styling.StyleInclude");
ResourceInclude = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.Styling.ResourceInclude");
diff --git a/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs b/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs
index 70e5fce853..09f04dfe70 100644
--- a/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs
+++ b/src/Markup/Avalonia.Markup/Data/TemplateBinding.cs
@@ -109,7 +109,7 @@ namespace Avalonia.Data
}
///
- void ISetterValue.Initialize(ISetter setter) => _isSetterValue = true;
+ void ISetterValue.Initialize(SetterBase setter) => _isSetterValue = true;
protected override void Subscribed()
{