public void AutoRows5 () { Grid grid = new Grid (); grid.AddColumns (new GridLength (50)); grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto, GridLength.Auto, GridLength.Auto); grid.AddChild (new LayoutPoker { Width = 50, Height = 50 }, 0, 0, 3, 1); grid.AddChild (new LayoutPoker { Width = 50, Height = 60 }, 1, 0, 3, 1); // When calculating the heights of automatic rows, the children added to the grid // distribute their height in the opposite order in which they were added. CreateAsyncTest (grid, () => { // Here the element with height 60 distributes its height first grid.CheckRowHeights ("#1", 3.33, 23.33, 23.33, 20, 0); grid.ChangeRow (1, 1); grid.ChangeRow (0, 1); grid.ChangeRow (1, 0); }, () => { // Reversing the rows does not stop the '60' element from // Distributing its height first grid.CheckRowHeights ("#2", 20, 23.33, 23.33, 3.33, 0); // Now reverse the order in which the elements are added so that // the '50' element distributes first. grid.Children.Clear (); grid.AddChild (new LayoutPoker { Width = 50, Height = 60 }, 1, 0, 3, 1); grid.AddChild (new LayoutPoker { Width = 50, Height = 50 }, 0, 0, 3, 1); }, () => { grid.CheckRowHeights ("#3", 16.66, 25.55, 25.55, 8.88, 0); grid.ChangeRow (1, 1); grid.ChangeRow (0, 1); grid.ChangeRow (1, 0); }, () => { grid.CheckRowHeights ("#4", 16.66, 25.55, 25.55, 8.88, 0); } ); }
public void AutoRows3 () { // Start off with two elements in the first row with the larger element having rowspan = 2 // and see how rowspan affects the rendering. Grid grid = new Grid (); grid.AddColumns (new GridLength (50), new GridLength (50)); grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto); grid.AddChild (new LayoutPoker { Width = 50, Height = 50 }, 0, 0, 1, 1); grid.AddChild (new LayoutPoker { Width = 50, Height = 60 }, 0, 1, 2, 1); CreateAsyncTest (grid, () => { grid.CheckRowHeights ("#1", 55, 5, 0); grid.ChangeRow (1, 1); }, () => { grid.CheckRowHeights ("#2", 50, 30, 30); grid.ChangeRow (1, 2); }, () => { grid.CheckRowHeights ("#3", 50, 0, 60); grid.ChangeRow (1, 0); grid.ChangeRow (0, 1); }, () => { grid.CheckRowHeights ("#3", 5, 55, 0); } ); }
public void AutoRows4 () { // See how rowspan = 3 affects this with 5 rows. Grid grid = new Grid (); grid.AddColumns (new GridLength (50), new GridLength (50)); grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto, GridLength.Auto, GridLength.Auto); // Give first child a rowspan of 2 grid.AddChild (new LayoutPoker { Width = 50, Height = 50 }, 0, 0, 1, 1); grid.AddChild (new LayoutPoker { Width = 50, Height = 60 }, 0, 1, 3, 1); CreateAsyncTest (grid, () => { // If an element spans across multiple rows and one of those rows // is already large enough to contain that element, it puts itself // entirely inside that row grid.CheckRowHeights ("#1", 53.33, 3.33, 3.33, 0, 0); grid.ChangeRow (1, 1); }, () => { // An 'auto' row which has no children whose rowspan/colspan // *ends* in that row has a height of zero grid.CheckRowHeights ("#2", 50, 20, 20, 20, 0); grid.ChangeRow (1, 2); }, () => { // If an element which spans multiple rows is the only element in // the rows it spans, it divides evenly between the rows it spans grid.CheckRowHeights ("#3", 50, 0, 20, 20, 20); grid.ChangeRow (1, 0); grid.ChangeRow (0, 1); }, () => { // If there are two auto rows beside each other and an element spans those // two rows, the total height is averaged between the two rows. grid.CheckRowHeights ("#4", 3.33, 53.33, 3.33, 0, 0); } ); }
public void AutoRows2 () { // Start off with two elements in the first row with the smaller element having rowspan = 2 // and see how rowspan affects the rendering. Grid grid = new Grid (); grid.AddColumns (new GridLength (50), new GridLength (50)); grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto); grid.AddChild (new LayoutPoker { Width = 50, Height = 50 }, 0, 0, 2, 1); grid.AddChild (new LayoutPoker { Width = 50, Height = 60 }, 0, 1, 1, 1); // Start off with both elements at row 1, and the smaller element having rowspan = 2 CreateAsyncTest (grid, () => { // If an element spans across multiple rows and one of those rows // is already large enough to contain that element, it puts itself // entirely inside that row grid.CheckRowHeights ("#1", 60, 0, 0); grid.ChangeRow (1, 1); }, () => { // An 'auto' row which has no children whose rowspan/colspan // *ends* in that row has a height of zero grid.CheckRowHeights ("#2", 0, 60, 0); grid.ChangeRow (1, 2); }, () => { // If an element which spans multiple rows is the only element in // the rows it spans, it divides evenly between the rows it spans grid.CheckRowHeights ("#2", 25, 25, 60); grid.ChangeRow (1, 0); grid.ChangeRow (0, 1); }, () => { grid.CheckRowHeights ("#2", 60, 25, 25); } ); }