diff --git a/src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs b/src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs
index 832a25be27..086257f24c 100644
--- a/src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs
@@ -135,7 +135,7 @@ namespace Avalonia.Markup.Xaml.Data
fallback = null;
}
- var subject = new ExpressionSubject(
+ var subject = new BindingExpression(
observer,
targetProperty?.PropertyType ?? typeof(object),
fallback,
diff --git a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj
index 9edfd2957d..738f381f4e 100644
--- a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj
+++ b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj
@@ -46,7 +46,7 @@
-
+
diff --git a/src/Markup/Avalonia.Markup/Data/ExpressionSubject.cs b/src/Markup/Avalonia.Markup/Data/BindingExpression.cs
similarity index 96%
rename from src/Markup/Avalonia.Markup/Data/ExpressionSubject.cs
rename to src/Markup/Avalonia.Markup/Data/BindingExpression.cs
index cb587c683b..0f4c091bff 100644
--- a/src/Markup/Avalonia.Markup/Data/ExpressionSubject.cs
+++ b/src/Markup/Avalonia.Markup/Data/BindingExpression.cs
@@ -12,10 +12,10 @@ using Avalonia.Utilities;
namespace Avalonia.Markup.Data
{
///
- /// Turns an into a subject that can be bound two-way with
- /// a value converter.
+ /// Binds to an expression on an object using a type value converter to convert the values
+ /// that are send and received.
///
- public class ExpressionSubject : ISubject, IDescription
+ public class BindingExpression : ISubject, IDescription
{
private readonly ExpressionObserver _inner;
private readonly Type _targetType;
@@ -28,7 +28,7 @@ namespace Avalonia.Markup.Data
///
/// The .
/// The type to convert the value to.
- public ExpressionSubject(ExpressionObserver inner, Type targetType)
+ public BindingExpression(ExpressionObserver inner, Type targetType)
: this(inner, targetType, DefaultValueConverter.Instance)
{
}
@@ -43,7 +43,7 @@ namespace Avalonia.Markup.Data
/// A parameter to pass to .
///
/// The binding priority.
- public ExpressionSubject(
+ public BindingExpression(
ExpressionObserver inner,
Type targetType,
IValueConverter converter,
@@ -66,7 +66,7 @@ namespace Avalonia.Markup.Data
/// A parameter to pass to .
///
/// The binding priority.
- public ExpressionSubject(
+ public BindingExpression(
ExpressionObserver inner,
Type targetType,
object fallbackValue,
diff --git a/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj b/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
index 55160f1698..66d234ac19 100644
--- a/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
+++ b/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
@@ -111,7 +111,7 @@
-
+
diff --git a/tests/Avalonia.Markup.UnitTests/Data/ExpressionSubjectTests.cs b/tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
similarity index 89%
rename from tests/Avalonia.Markup.UnitTests/Data/ExpressionSubjectTests.cs
rename to tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
index 1af35d692b..c53dc417b0 100644
--- a/tests/Avalonia.Markup.UnitTests/Data/ExpressionSubjectTests.cs
+++ b/tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
@@ -2,26 +2,25 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
-using System.ComponentModel;
+using System.Collections.Generic;
using System.Globalization;
using System.Reactive.Linq;
-using Moq;
+using System.Threading;
using Avalonia.Data;
using Avalonia.Markup.Data;
-using Xunit;
-using System.Threading;
-using System.Collections.Generic;
using Avalonia.UnitTests;
+using Moq;
+using Xunit;
namespace Avalonia.Markup.UnitTests.Data
{
- public class ExpressionSubjectTests
+ public class BindingExpressionTests
{
[Fact]
public async void Should_Get_Simple_Property_Value()
{
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(string));
var result = await target.Take(1);
Assert.Equal("foo", result);
@@ -31,7 +30,7 @@ namespace Avalonia.Markup.UnitTests.Data
public void Should_Set_Simple_Property_Value()
{
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(string));
target.OnNext("bar");
@@ -44,7 +43,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { StringValue = "5.6" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
+ var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double));
var result = await target.Take(1);
Assert.Equal(5.6, result);
@@ -54,7 +53,7 @@ namespace Avalonia.Markup.UnitTests.Data
public async void Getting_Invalid_Double_String_Should_Return_BindingError()
{
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
+ var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double));
var result = await target.Take(1);
Assert.IsType(result);
@@ -64,7 +63,7 @@ namespace Avalonia.Markup.UnitTests.Data
public async void Should_Coerce_Get_Null_Double_String_To_UnsetValue()
{
var data = new Class1 { StringValue = null };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
+ var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double));
var result = await target.Take(1);
Assert.Equal(AvaloniaProperty.UnsetValue, result);
@@ -76,7 +75,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { StringValue = (5.6).ToString() };
- var target = new ExpressionSubject(new ExpressionObserver(data, "StringValue"), typeof(double));
+ var target = new BindingExpression(new ExpressionObserver(data, "StringValue"), typeof(double));
target.OnNext(6.7);
@@ -89,7 +88,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string));
var result = await target.Take(1);
Assert.Equal((5.6).ToString(), result);
@@ -101,7 +100,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string));
target.OnNext("6.7");
@@ -114,7 +113,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "StringValue"),
typeof(int),
42,
@@ -135,7 +134,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "StringValue", true),
typeof(int),
42,
@@ -156,7 +155,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "StringValue"),
typeof(int),
"bar",
@@ -178,7 +177,7 @@ namespace Avalonia.Markup.UnitTests.Data
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
var data = new Class1 { StringValue = "foo" };
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "StringValue", true),
typeof(int),
"bar",
@@ -198,7 +197,7 @@ namespace Avalonia.Markup.UnitTests.Data
public void Setting_Invalid_Double_String_Should_Not_Change_Target()
{
var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string));
target.OnNext("foo");
@@ -209,7 +208,7 @@ namespace Avalonia.Markup.UnitTests.Data
public void Setting_Invalid_Double_String_Should_Use_FallbackValue()
{
var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "DoubleValue"),
typeof(string),
"9.8",
@@ -224,7 +223,7 @@ namespace Avalonia.Markup.UnitTests.Data
public void Should_Coerce_Setting_Null_Double_To_Default_Value()
{
var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string));
target.OnNext(null);
@@ -235,7 +234,7 @@ namespace Avalonia.Markup.UnitTests.Data
public void Should_Coerce_Setting_UnsetValue_Double_To_Default_Value()
{
var data = new Class1 { DoubleValue = 5.6 };
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue"), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue"), typeof(string));
target.OnNext(AvaloniaProperty.UnsetValue);
@@ -247,7 +246,7 @@ namespace Avalonia.Markup.UnitTests.Data
{
var data = new Class1 { DoubleValue = 5.6 };
var converter = new Mock();
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "DoubleValue"),
typeof(string),
converter.Object,
@@ -263,7 +262,7 @@ namespace Avalonia.Markup.UnitTests.Data
{
var data = new Class1 { DoubleValue = 5.6 };
var converter = new Mock();
- var target = new ExpressionSubject(
+ var target = new BindingExpression(
new ExpressionObserver(data, "DoubleValue"),
typeof(string),
converter.Object,
@@ -279,7 +278,7 @@ namespace Avalonia.Markup.UnitTests.Data
{
var data = new Class1 { DoubleValue = 5.6 };
var converter = new Mock();
- var target = new ExpressionSubject(new ExpressionObserver(data, "DoubleValue", true), typeof(string));
+ var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue", true), typeof(string));
var result = new List();
target.Subscribe(x => result.Add(x));
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs
index b07a031e15..210ad2ab0b 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests.cs
@@ -200,7 +200,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
var result = binding.Initiate(target, TextBox.TextProperty).Subject;
- Assert.IsType(((ExpressionSubject)result).Converter);
+ Assert.IsType(((BindingExpression)result).Converter);
}
[Fact]
@@ -216,7 +216,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
var result = binding.Initiate(target, TextBox.TextProperty).Subject;
- Assert.Same(converter.Object, ((ExpressionSubject)result).Converter);
+ Assert.Same(converter.Object, ((BindingExpression)result).Converter);
}
[Fact]
@@ -233,7 +233,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
var result = binding.Initiate(target, TextBox.TextProperty).Subject;
- Assert.Same("foo", ((ExpressionSubject)result).ConverterParameter);
+ Assert.Same("foo", ((BindingExpression)result).ConverterParameter);
}
[Fact]
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_DataValidation.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_DataValidation.cs
index 4f175ccf5b..5dd8d0cdf9 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_DataValidation.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Data/BindingTests_DataValidation.cs
@@ -2,15 +2,11 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Reactive.Linq;
using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.Markup.Data;
using Avalonia.Markup.Xaml.Data;
-using Moq;
-using ReactiveUI;
using Xunit;
namespace Avalonia.Markup.Xaml.UnitTests.Data
@@ -27,7 +23,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
var target = new Binding(nameof(Class1.Foo));
var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: false);
- var subject = (ExpressionSubject)instanced.Subject;
+ var subject = (BindingExpression)instanced.Subject;
object result = null;
subject.Subscribe(x => result = x);
@@ -45,7 +41,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
var target = new Binding(nameof(Class1.Foo));
var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: true);
- var subject = (ExpressionSubject)instanced.Subject;
+ var subject = (BindingExpression)instanced.Subject;
object result = null;
subject.Subscribe(x => result = x);
@@ -63,7 +59,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Data
var target = new Binding(nameof(Class1.Foo)) { Priority = BindingPriority.TemplatedParent };
var instanced = target.Initiate(textBlock, TextBlock.TextProperty, enableDataValidation: true);
- var subject = (ExpressionSubject)instanced.Subject;
+ var subject = (BindingExpression)instanced.Subject;
object result = null;
subject.Subscribe(x => result = x);