diff --git a/src/Avalonia.Base/Data/Core/AvaloniaPropertyAccessorNode.cs b/src/Avalonia.Base/Data/Core/AvaloniaPropertyAccessorNode.cs index 18e853722d..3484fb5e23 100644 --- a/src/Avalonia.Base/Data/Core/AvaloniaPropertyAccessorNode.cs +++ b/src/Avalonia.Base/Data/Core/AvaloniaPropertyAccessorNode.cs @@ -5,7 +5,7 @@ using System.Text; namespace Avalonia.Data.Core { - public class AvaloniaPropertyAccessorNode : ExpressionNode, ISettableNode + public class AvaloniaPropertyAccessorNode : SettableNode { private readonly bool _enableValidation; private readonly AvaloniaProperty _property; @@ -18,9 +18,9 @@ namespace Avalonia.Data.Core public override string Description => PropertyName; public string PropertyName { get; } - public Type PropertyType => _property.PropertyType; + public override Type PropertyType => _property.PropertyType; - public bool SetTargetValue(object value, BindingPriority priority) + protected override bool SetTargetValueCore(object value, BindingPriority priority) { try { diff --git a/src/Avalonia.Base/Data/Core/IndexerExpressionNode.cs b/src/Avalonia.Base/Data/Core/IndexerExpressionNode.cs index a14802a433..0b0d43a97d 100644 --- a/src/Avalonia.Base/Data/Core/IndexerExpressionNode.cs +++ b/src/Avalonia.Base/Data/Core/IndexerExpressionNode.cs @@ -34,7 +34,7 @@ namespace Avalonia.Data.Core public override string Description => expression.ToString(); - public override bool SetTargetValue(object value, BindingPriority priority) + protected override bool SetTargetValueCore(object value, BindingPriority priority) { try { diff --git a/src/Avalonia.Base/Data/Core/IndexerNodeBase.cs b/src/Avalonia.Base/Data/Core/IndexerNodeBase.cs index 6dc7d61168..a43d119ebb 100644 --- a/src/Avalonia.Base/Data/Core/IndexerNodeBase.cs +++ b/src/Avalonia.Base/Data/Core/IndexerNodeBase.cs @@ -13,7 +13,7 @@ using Avalonia.Utilities; namespace Avalonia.Data.Core { - public abstract class IndexerNodeBase : ExpressionNode, ISettableNode + public abstract class IndexerNodeBase : SettableNode { protected override IObservable StartListeningCore(WeakReference reference) { @@ -41,10 +41,6 @@ namespace Avalonia.Data.Core return inputs.Merge().StartWith(GetValue(target)); } - public abstract bool SetTargetValue(object value, BindingPriority priority); - - public abstract Type PropertyType { get; } - protected abstract object GetValue(object target); protected abstract int? TryGetFirstArgumentAsInt(); diff --git a/src/Avalonia.Base/Data/Core/SettableNode.cs b/src/Avalonia.Base/Data/Core/SettableNode.cs index 092cdbe48f..e7c6ab766f 100644 --- a/src/Avalonia.Base/Data/Core/SettableNode.cs +++ b/src/Avalonia.Base/Data/Core/SettableNode.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace Avalonia.Data.Core { - internal abstract class SettableNode : ExpressionNode + public abstract class SettableNode : ExpressionNode { public bool SetTargetValue(object value, BindingPriority priority) { diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs index 01eb0a9b53..b3d0555f14 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs @@ -25,7 +25,7 @@ namespace Avalonia.Markup.Parsers.Nodes public override string Description => "[" + string.Join(",", Arguments) + "]"; - public override bool SetTargetValue(object value, BindingPriority priority) + protected override bool SetTargetValueCore(object value, BindingPriority priority) { var typeInfo = Target.Target.GetType().GetTypeInfo(); var list = Target.Target as IList;