From b1e9c028286809c0f84130773654003ab0fc91dd Mon Sep 17 00:00:00 2001 From: "Luis v.d.Eltz" Date: Wed, 11 Dec 2019 18:09:53 +0100 Subject: [PATCH 1/3] Adding TargetNullValue to BindingExtension --- .../MarkupExtensions/BindingExtension.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/BindingExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/BindingExtension.cs index 1ceef5c824..3e1d85a913 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/BindingExtension.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/BindingExtension.cs @@ -45,7 +45,8 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions Source = Source, StringFormat = StringFormat, RelativeSource = RelativeSource, - DefaultAnchor = new WeakReference(GetDefaultAnchor(descriptorContext)) + DefaultAnchor = new WeakReference(GetDefaultAnchor(descriptorContext)), + TargetNullValue = TargetNullValue }; } @@ -83,5 +84,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions public string StringFormat { get; set; } public RelativeSource RelativeSource { get; set; } + + public object TargetNullValue { get; set; } } } From e89d5af718f4e6614ecafb8f16a82ffbf4a8c571 Mon Sep 17 00:00:00 2001 From: "Luis v.d.Eltz" Date: Thu, 12 Dec 2019 10:29:28 +0100 Subject: [PATCH 2/3] Adding unit test --- .../MarkupExtensions/BindingExtensionTests.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs index c3bc649abb..fa7e7ead28 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs @@ -38,6 +38,27 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions Assert.Equal("foobar", textBlock.Text); } } + + [Fact] + public void BindingExtension_Binds_To_TargetNullValue() + { + using (StyledWindow()) + { + var xaml = @" + + +"; + + var loader = new AvaloniaXamlLoader(); + var window = (Window)loader.Load(xaml); + var textBlock = window.FindControl("textBlock"); + + window.Show(); + + Assert.Equal("foobar", textBlock.Text); + } + } private IDisposable StyledWindow(params (string, string)[] assets) { From d88640b1eacfa6b79ff5c9a36abe093f432ac261 Mon Sep 17 00:00:00 2001 From: Luis von der Eltz Date: Thu, 12 Dec 2019 11:33:37 +0100 Subject: [PATCH 3/3] !B Fixing test --- .../MarkupExtensions/BindingExtensionTests.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs index fa7e7ead28..88c8034e52 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs @@ -47,19 +47,29 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions var xaml = @" - + + foobar + + + "; var loader = new AvaloniaXamlLoader(); var window = (Window)loader.Load(xaml); var textBlock = window.FindControl("textBlock"); + window.DataContext = new FooBar(); window.Show(); Assert.Equal("foobar", textBlock.Text); } } + private class FooBar + { + public object Foo { get; } = null; + } + private IDisposable StyledWindow(params (string, string)[] assets) { var services = TestServices.StyledWindow.With(