Browse Source

Make BindingExpressionBase the public API.

This matches WPF's API.
refactor/bindingexpressions-in-valuestore
Steven Kirk 3 years ago
parent
commit
18c844ef02
  1. 2
      src/Avalonia.Base/AvaloniaObject.cs
  2. 2
      src/Avalonia.Base/AvaloniaProperty.cs
  3. 7
      src/Avalonia.Base/Data/BindingExpressionBase.cs
  4. 7
      src/Avalonia.Base/Data/IBindingExpression.cs
  5. 2
      src/Avalonia.Base/DirectPropertyBase.cs
  6. 4
      src/Avalonia.Base/PropertyStore/ValueStore.cs
  7. 2
      src/Avalonia.Base/StyledProperty.cs
  8. 2
      tests/Avalonia.Base.UnitTests/AvaloniaPropertyTests.cs

2
src/Avalonia.Base/AvaloniaObject.cs

@ -416,7 +416,7 @@ namespace Avalonia
/// <returns>
/// A disposable which can be used to terminate the binding.
/// </returns>
public IBindingExpression Bind(AvaloniaProperty property, IBinding binding)
public BindingExpressionBase Bind(AvaloniaProperty property, IBinding binding)
{
if (binding is not IBinding2 b)
throw new NotSupportedException($"Unsupported IBinding implementation '{binding}'.");

2
src/Avalonia.Base/AvaloniaProperty.cs

@ -566,7 +566,7 @@ namespace Avalonia
/// </summary>
/// <param name="o">The object instance.</param>
/// <param name="source">The binding source.</param>
internal abstract IBindingExpression RouteBind(
internal abstract BindingExpressionBase RouteBind(
AvaloniaObject o,
UntypedBindingExpressionBase source);

7
src/Avalonia.Base/Data/Core/BindingExpressionBase.cs → src/Avalonia.Base/Data/BindingExpressionBase.cs

@ -1,9 +1,10 @@
using Avalonia.PropertyStore;
using System;
using Avalonia.PropertyStore;
using Avalonia.Styling;
namespace Avalonia.Data.Core;
namespace Avalonia.Data;
public abstract class BindingExpressionBase : IBindingExpression, ISetterInstance
public abstract class BindingExpressionBase : IDisposable, ISetterInstance
{
private protected BindingExpressionBase()
{

7
src/Avalonia.Base/Data/IBindingExpression.cs

@ -1,7 +0,0 @@
using System;
namespace Avalonia.Data;
public interface IBindingExpression : IDisposable
{
}

2
src/Avalonia.Base/DirectPropertyBase.cs

@ -183,7 +183,7 @@ namespace Avalonia
return o.Bind(this, source);
}
internal override IBindingExpression RouteBind(AvaloniaObject o, UntypedBindingExpressionBase source)
internal override BindingExpressionBase RouteBind(AvaloniaObject o, UntypedBindingExpressionBase source)
{
return o.GetValueStore().AddBinding(this, source);
}

4
src/Avalonia.Base/PropertyStore/ValueStore.cs

@ -43,7 +43,7 @@ namespace Avalonia.PropertyStore
ReevaluateEffectiveValues();
}
public IBindingExpression AddBinding<T>(
public BindingExpressionBase AddBinding<T>(
StyledProperty<T> property,
UntypedBindingExpressionBase source)
{
@ -156,7 +156,7 @@ namespace Avalonia.PropertyStore
}
}
public IBindingExpression AddBinding<T>(DirectPropertyBase<T> property, UntypedBindingExpressionBase source)
public BindingExpressionBase AddBinding<T>(DirectPropertyBase<T> property, UntypedBindingExpressionBase source)
{
DisposeExistingLocalValueBinding(property);
_localValueBindings ??= new();

2
src/Avalonia.Base/StyledProperty.cs

@ -228,7 +228,7 @@ namespace Avalonia
return target.Bind<TValue>(this, source, priority);
}
internal override IBindingExpression RouteBind(AvaloniaObject o, UntypedBindingExpressionBase source)
internal override BindingExpressionBase RouteBind(AvaloniaObject o, UntypedBindingExpressionBase source)
{
return o.GetValueStore().AddBinding(this, source);
}

2
tests/Avalonia.Base.UnitTests/AvaloniaPropertyTests.cs

@ -175,7 +175,7 @@ namespace Avalonia.Base.UnitTests
throw new NotImplementedException();
}
internal override IBindingExpression RouteBind(AvaloniaObject o, UntypedBindingExpressionBase source)
internal override BindingExpressionBase RouteBind(AvaloniaObject o, UntypedBindingExpressionBase source)
{
throw new NotImplementedException();
}

Loading…
Cancel
Save