From 822d57cac6369d72aaee4d0a4a5ca0b5259cc8d7 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Mon, 24 Oct 2022 14:45:25 +0200 Subject: [PATCH 1/3] Use LangVersion preview for all projects --- build/SharedVersion.props | 2 +- .../Avalonia.Markup.Xaml.Loader.csproj | 1 - src/Markup/Avalonia.Markup/Avalonia.Markup.csproj | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/build/SharedVersion.props b/build/SharedVersion.props index 1b60bb4df9..5838519596 100644 --- a/build/SharedVersion.props +++ b/build/SharedVersion.props @@ -8,7 +8,7 @@ https://github.com/AvaloniaUI/Avalonia/ true CS1591 - latest + preview MIT Icon.png Avalonia is a cross-platform UI framework for .NET providing a flexible styling system and supporting a wide range of Operating Systems such as Windows, Linux, macOS and with experimental support for Android, iOS and WebAssembly. diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj b/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj index f9be3fd62a..1dc7ce5e99 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj @@ -5,7 +5,6 @@ true Avalonia.Markup.Xaml.Loader $(DefineConstants);XAMLX_INTERNAL - 11 diff --git a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj index 6b25cbbeab..6711c3dd3d 100644 --- a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj +++ b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj @@ -2,7 +2,6 @@ net6.0;netstandard2.0 Avalonia - 11 From fd46119d74fd7ef3779311bf0b91e26570288e54 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 24 Oct 2022 16:56:17 +0200 Subject: [PATCH 2/3] Add failing test for Viewbox DataContext binding. --- .../ViewboxTests.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/ViewboxTests.cs b/tests/Avalonia.Controls.UnitTests/ViewboxTests.cs index 4ffd314857..629408bcba 100644 --- a/tests/Avalonia.Controls.UnitTests/ViewboxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ViewboxTests.cs @@ -1,4 +1,5 @@ using Avalonia.Controls.Shapes; +using Avalonia.Data; using Avalonia.LogicalTree; using Avalonia.Media; using Avalonia.UnitTests; @@ -207,6 +208,26 @@ namespace Avalonia.Controls.UnitTests Assert.Equal(new Size(200, 200), target.DesiredSize); } + [Fact] + public void Child_DataContext_Binding_Works() + { + var data = new + { + Foo = "foo", + }; + + var target = new Viewbox() + { + DataContext = data, + Child = new Canvas + { + [!Canvas.DataContextProperty] = new Binding("Foo"), + }, + }; + + Assert.Equal("foo", target.Child.DataContext); + } + private bool TryGetScale(Viewbox viewbox, out Vector scale) { if (viewbox.InternalTransform is null) From 4740955ef4cdeac20367c2b3023967bac4e0585d Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 24 Oct 2022 16:58:30 +0200 Subject: [PATCH 3/3] Set Viewbox logical parent. Fixes `DataContext` binding in `Viewbox.Child`. --- src/Avalonia.Controls/Viewbox.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Avalonia.Controls/Viewbox.cs b/src/Avalonia.Controls/Viewbox.cs index aabfd3ef18..07d877142e 100644 --- a/src/Avalonia.Controls/Viewbox.cs +++ b/src/Avalonia.Controls/Viewbox.cs @@ -42,6 +42,7 @@ namespace Avalonia.Controls // can be applied independently of the Viewbox and Child transforms. _containerVisual = new ViewboxContainer(); _containerVisual.RenderTransformOrigin = RelativePoint.TopLeft; + ((ISetLogicalParent)_containerVisual).SetParent(this); VisualChildren.Add(_containerVisual); }