@ -13,6 +13,7 @@ using Avalonia.Platform;
using Avalonia.Threading ;
using Avalonia.Threading ;
using Avalonia.UnitTests ;
using Avalonia.UnitTests ;
using Avalonia.VisualTree ;
using Avalonia.VisualTree ;
using Avalonia.Layout ;
using Moq ;
using Moq ;
using Xunit ;
using Xunit ;
@ -457,5 +458,57 @@ namespace Avalonia.Controls.UnitTests
return contentPanel ;
return contentPanel ;
} ) ;
} ) ;
}
}
[Fact]
public void VerticalContentAlignment_Should_Propagate_To_Internal_Grid ( )
{
using ( UnitTestApplication . Start ( Services ) )
{
var picker = new DatePicker { VerticalContentAlignment = VerticalAlignment . Bottom } ;
picker . Template = new Avalonia . Controls . Templates . FuncControlTemplate < DatePicker > ( ( parent , scope ) = >
{
var grid = new Grid { Name = "PART_ButtonContentGrid" } ;
grid . Bind ( Grid . VerticalAlignmentProperty , new Avalonia . Data . Binding ( "VerticalContentAlignment" )
{
RelativeSource = new Avalonia . Data . RelativeSource ( Avalonia . Data . RelativeSourceMode . TemplatedParent )
} ) ;
var dayText = new TextBlock { Name = "PART_DayTextBlock" } ;
var monthText = new TextBlock { Name = "PART_MonthTextBlock" } ;
var yearText = new TextBlock { Name = "PART_YearTextBlock" } ;
var firstSpacer = new Avalonia . Controls . Shapes . Rectangle { Name = "PART_FirstSpacer" } ;
var secondSpacer = new Avalonia . Controls . Shapes . Rectangle { Name = "PART_SecondSpacer" } ;
scope . Register ( "PART_ButtonContentGrid" , grid ) ;
scope . Register ( "PART_DayTextBlock" , dayText ) ;
scope . Register ( "PART_MonthTextBlock" , monthText ) ;
scope . Register ( "PART_YearTextBlock" , yearText ) ;
scope . Register ( "PART_FirstSpacer" , firstSpacer ) ;
scope . Register ( "PART_SecondSpacer" , secondSpacer ) ;
grid . Children . Add ( dayText ) ;
grid . Children . Add ( monthText ) ;
grid . Children . Add ( yearText ) ;
grid . Children . Add ( firstSpacer ) ;
grid . Children . Add ( secondSpacer ) ;
return grid ;
} ) ;
var root = new Avalonia . UnitTests . TestRoot { Child = picker } ;
root . Measure ( new Avalonia . Size ( 1 0 0 , 1 0 0 ) ) ;
root . Arrange ( new Avalonia . Rect ( 0 , 0 , 1 0 0 , 1 0 0 ) ) ;
var internalGrid = picker . GetVisualDescendants ( )
. OfType < Grid > ( )
. FirstOrDefault ( g = > g . Name = = "PART_ButtonContentGrid" ) ;
Assert . NotNull ( internalGrid ) ;
Assert . Equal ( VerticalAlignment . Bottom , internalGrid . VerticalAlignment ) ;
}
}
}
}
}
}