소스 검색

Fix BindingEvaluator.ClearDataContext (#18964)

* Add failing test for BindingEvaluator.ClearDataContext

* Fix BindingEvaluator.ClearDataContext
Julien Lebosquain 4 달 전
부모
커밋
337f004786
2개의 변경된 파일22개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      src/Avalonia.Controls/Utils/BindingEvaluator.cs
  2. 21 0
      tests/Avalonia.Controls.UnitTests/Utils/BindingEvaluatorTests.cs

+ 1 - 1
src/Avalonia.Controls/Utils/BindingEvaluator.cs

@@ -39,7 +39,7 @@ internal sealed class BindingEvaluator<T> : StyledElement, IDisposable
     }
 
     public void ClearDataContext()
-        => DataContext = this;
+        => DataContext = null;
 
     public void Dispose()
     {

+ 21 - 0
tests/Avalonia.Controls.UnitTests/Utils/BindingEvaluatorTests.cs

@@ -0,0 +1,21 @@
+#nullable enable
+
+using Avalonia.Controls.Utils;
+using Avalonia.UnitTests;
+using Xunit;
+
+namespace Avalonia.Controls.UnitTests.Utils;
+
+public class BindingEvaluatorTests : ScopedTestBase
+{
+    [Fact]
+    public void ClearDataContext_Sets_DataContext_To_Null()
+    {
+        var evaluator = new BindingEvaluator<string?>();
+        evaluator.Evaluate("foo");
+        Assert.Equal("foo", evaluator.DataContext);
+
+        evaluator.ClearDataContext();
+        Assert.Null(evaluator.DataContext);
+    }
+}