diff --git a/src/Avalonia.Controls/Canvas.cs b/src/Avalonia.Controls/Canvas.cs index 8b433c2b67..8a80d6bdf7 100644 --- a/src/Avalonia.Controls/Canvas.cs +++ b/src/Avalonia.Controls/Canvas.cs @@ -22,25 +22,25 @@ namespace Avalonia.Controls /// Defines the Left attached property. /// public static readonly AttachedProperty LeftProperty = - AvaloniaProperty.RegisterAttached("Left"); + AvaloniaProperty.RegisterAttached("Left", double.NaN); /// /// Defines the Top attached property. /// public static readonly AttachedProperty TopProperty = - AvaloniaProperty.RegisterAttached("Top"); + AvaloniaProperty.RegisterAttached("Top", double.NaN); /// /// Defines the Right attached property. /// public static readonly AttachedProperty RightProperty = - AvaloniaProperty.RegisterAttached("Right"); + AvaloniaProperty.RegisterAttached("Right", double.NaN); /// /// Defines the Bottom attached property. /// public static readonly AttachedProperty BottomProperty = - AvaloniaProperty.RegisterAttached("Bottom"); + AvaloniaProperty.RegisterAttached("Bottom", double.NaN); /// /// Initializes static members of the class. diff --git a/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj b/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj index f9b3b4de96..b967f68b78 100644 --- a/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj +++ b/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj @@ -95,6 +95,7 @@ + diff --git a/tests/Avalonia.Controls.UnitTests/CanvasTests.cs b/tests/Avalonia.Controls.UnitTests/CanvasTests.cs new file mode 100644 index 0000000000..6759792764 --- /dev/null +++ b/tests/Avalonia.Controls.UnitTests/CanvasTests.cs @@ -0,0 +1,112 @@ +// Copyright (c) The Avalonia Project. All rights reserved. +// Licensed under the MIT license. See licence.md file in the project root for full license information. + +using System; +using Avalonia.Controls.Shapes; +using Xunit; + +namespace Avalonia.Controls.UnitTests +{ + public class CanvasTests + { + [Fact] + public void Left_Property_Should_Work() + { + Rectangle rect; + var target = new Canvas + { + Width = 400, + Height = 400, + Children = + { + (rect = new Rectangle + { + MinWidth = 20, + MinHeight = 25, + [Canvas.LeftProperty] = 30, + }) + } + }; + + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Rect(30, 0, 20, 25), rect.Bounds); + } + + [Fact] + public void Top_Property_Should_Work() + { + Rectangle rect; + var target = new Canvas + { + Width = 400, + Height = 400, + Children = + { + (rect = new Rectangle + { + MinWidth = 20, + MinHeight = 25, + [Canvas.TopProperty] = 30, + }) + } + }; + + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Rect(0, 30, 20, 25), rect.Bounds); + } + + [Fact] + public void Right_Property_Should_Work() + { + Rectangle rect; + var target = new Canvas + { + Width = 400, + Height = 400, + Children = + { + (rect = new Rectangle + { + MinWidth = 20, + MinHeight = 25, + [Canvas.RightProperty] = 30, + }) + } + }; + + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Rect(350, 0, 20, 25), rect.Bounds); + } + + [Fact] + public void Bottom_Property_Should_Work() + { + Rectangle rect; + var target = new Canvas + { + Width = 400, + Height = 400, + Children = + { + (rect = new Rectangle + { + MinWidth = 20, + MinHeight = 25, + [Canvas.BottomProperty] = 30, + }) + } + }; + + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Rect(0, 345, 20, 25), rect.Bounds); + } + } +}