|
|
@@ -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<ThemedControl2>((o, n) => new ThemedControl())),
|
|
|
+ },
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new Style(x => x.Nesting().Template().OfType<ThemedControl>())
|
|
|
+ {
|
|
|
+ Setters = { new Setter(TemplatedControl.CornerRadiusProperty, new CornerRadius(7)), }
|
|
|
+ },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ var root = CreateRoot(target);
|
|
|
+ var inner = Assert.IsType<ThemedControl>(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
|
|
|
{
|
|
|
}
|