diff --git a/tests/Avalonia.Base.UnitTests/Styling/StyledElementTests_Theming.cs b/tests/Avalonia.Base.UnitTests/Styling/StyledElementTests_Theming.cs index 9b133035f4..45188de6cb 100644 --- a/tests/Avalonia.Base.UnitTests/Styling/StyledElementTests_Theming.cs +++ b/tests/Avalonia.Base.UnitTests/Styling/StyledElementTests_Theming.cs @@ -189,6 +189,36 @@ public class StyledElementTests_Theming Assert.Null(((IStyleable)target).GetEffectiveTheme()); } + [Fact] + public void Nested_Style_Can_Override_Property_In_Inner_Templated_Control() + { + using var app = UnitTestApplication.Start(TestServices.RealStyler); + var target = new ThemedControl2 + { + Theme = new ControlTheme(typeof(ThemedControl2)) + { + Setters = + { + new Setter( + TemplatedControl.TemplateProperty, + new FuncControlTemplate((o, n) => new ThemedControl())), + }, + Children = + { + new Style(x => x.Nesting().Template().OfType()) + { + Setters = { new Setter(TemplatedControl.CornerRadiusProperty, new CornerRadius(7)), } + }, + } + }, + }; + + var root = CreateRoot(target); + var inner = Assert.IsType(target.VisualChild); + + Assert.Equal(new CornerRadius(7), inner.CornerRadius); + } + private static ThemedControl CreateTarget() => new ThemedControl(); private static TestRoot CreateRoot(IControl child) @@ -332,6 +362,7 @@ public class StyledElementTests_Theming Setters = { new Setter(TemplatedControl.TemplateProperty, template), + new Setter(TemplatedControl.CornerRadiusProperty, new CornerRadius(5)), }, Children = { @@ -376,6 +407,11 @@ public class StyledElementTests_Theming public IVisual? VisualChild => VisualChildren?.SingleOrDefault(); } + private class ThemedControl2 : TemplatedControl + { + public IVisual? VisualChild => VisualChildren?.SingleOrDefault(); + } + private class DerivedThemedControl : ThemedControl { }