|
|
|
@ -110,6 +110,53 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml |
|
|
|
Assert.Contains(bar, panel.Children); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ControlTemplate_With_Nested_Child_Is_Operational() |
|
|
|
{ |
|
|
|
var xaml = @"
|
|
|
|
<ControlTemplate xmlns='https://github.com/avaloniaui'>
|
|
|
|
<ContentControl Name='parent'> |
|
|
|
<ContentControl Name='child' /> |
|
|
|
</ContentControl> |
|
|
|
</ControlTemplate> |
|
|
|
";
|
|
|
|
var template = AvaloniaXamlLoader.Parse<ControlTemplate>(xaml); |
|
|
|
|
|
|
|
var parent = (ContentControl)template.Build(new ContentControl()); |
|
|
|
|
|
|
|
Assert.Equal("parent", parent.Name); |
|
|
|
|
|
|
|
var child = parent.Content as ContentControl; |
|
|
|
|
|
|
|
Assert.NotNull(child); |
|
|
|
|
|
|
|
Assert.Equal("child", child.Name); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ControlTemplate_With_Panel_Children_Are_Added() |
|
|
|
{ |
|
|
|
var xaml = @"
|
|
|
|
<ControlTemplate xmlns='https://github.com/avaloniaui'>
|
|
|
|
<Panel Name='panel'> |
|
|
|
<ContentControl Name='Foo' /> |
|
|
|
<ContentControl Name='Bar' /> |
|
|
|
</Panel> |
|
|
|
</ControlTemplate> |
|
|
|
";
|
|
|
|
var template = AvaloniaXamlLoader.Parse<ControlTemplate>(xaml); |
|
|
|
|
|
|
|
var panel = (Panel)template.Build(new ContentControl()); |
|
|
|
|
|
|
|
Assert.Equal(2, panel.Children.Count); |
|
|
|
|
|
|
|
var foo = panel.Children[0]; |
|
|
|
var bar = panel.Children[1]; |
|
|
|
|
|
|
|
Assert.Equal("Foo", foo.Name); |
|
|
|
Assert.Equal("Bar", bar.Name); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Named_x_Control_Is_Added_To_NameScope_Simple() |
|
|
|
{ |
|
|
|
@ -174,6 +221,66 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml |
|
|
|
Assert.Equal(100.0, setters[1].Value); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Complex_Style_Is_Parsed() |
|
|
|
{ |
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
{ |
|
|
|
var xaml = @"
|
|
|
|
<Styles xmlns='https://github.com/avaloniaui'>
|
|
|
|
<Style Selector='CheckBox'> |
|
|
|
<Setter Property='BorderBrush' Value='{StyleResource ThemeBorderMidBrush}'/> |
|
|
|
<Setter Property='BorderThickness' Value='{StyleResource ThemeBorderThickness}'/> |
|
|
|
<Setter Property='Template'> |
|
|
|
<ControlTemplate> |
|
|
|
<Grid ColumnDefinitions='Auto,*'> |
|
|
|
<Border Name='border' |
|
|
|
BorderBrush='{TemplateBinding BorderBrush}' |
|
|
|
BorderThickness='{TemplateBinding BorderThickness}' |
|
|
|
Width='18' |
|
|
|
Height='18' |
|
|
|
VerticalAlignment='Center'> |
|
|
|
<Path Name='checkMark' |
|
|
|
Fill='{StyleResource HighlightBrush}' |
|
|
|
Width='11' |
|
|
|
Height='10' |
|
|
|
Stretch='Uniform' |
|
|
|
HorizontalAlignment='Center' |
|
|
|
VerticalAlignment='Center' |
|
|
|
Data='M 1145.607177734375,430 C1145.607177734375,430 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1141.449951171875,435.0772705078125 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1139.232177734375,433.0999755859375 1138,434.5538330078125 1138,434.5538330078125 1138,434.5538330078125 1141.482177734375,438 1141.482177734375,438 1141.482177734375,438 1141.96875,437.9375 1141.96875,437.9375 1141.96875,437.9375 1147,431.34619140625 1147,431.34619140625 1147,431.34619140625 1145.607177734375,430 1145.607177734375,430 z'/> |
|
|
|
</Border> |
|
|
|
<ContentPresenter Name='PART_ContentPresenter' |
|
|
|
Content='{TemplateBinding Content}' |
|
|
|
ContentTemplate='{TemplateBinding ContentTemplate}' |
|
|
|
Margin='4,0,0,0' |
|
|
|
VerticalAlignment='Center' |
|
|
|
Grid.Column='1'/> |
|
|
|
</Grid> |
|
|
|
</ControlTemplate> |
|
|
|
</Setter> |
|
|
|
</Style> |
|
|
|
</Styles> |
|
|
|
";
|
|
|
|
var styles = AvaloniaXamlLoader.Parse<Styles>(xaml); |
|
|
|
|
|
|
|
Assert.Equal(1, styles.Count); |
|
|
|
|
|
|
|
var style = (Style)styles[0]; |
|
|
|
|
|
|
|
var setters = style.Setters.Cast<Setter>().ToArray(); |
|
|
|
|
|
|
|
Assert.Equal(3, setters.Length); |
|
|
|
|
|
|
|
Assert.Equal(CheckBox.BorderBrushProperty, setters[0].Property); |
|
|
|
Assert.Equal(CheckBox.BorderThicknessProperty, setters[1].Property); |
|
|
|
Assert.Equal(CheckBox.TemplateProperty, setters[2].Property); |
|
|
|
|
|
|
|
Assert.IsType<StyleResourceBinding>(setters[0].Value); |
|
|
|
Assert.IsType<StyleResourceBinding>(setters[1].Value); |
|
|
|
Assert.IsType<ControlTemplate>(setters[2].Value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Style_Resources_Are_Build() |
|
|
|
{ |
|
|
|
|