public void StarRows2 () { GridUnitType star = GridUnitType.Star; MyGrid grid = new MyGrid { Width = 100, Height = 210 }; grid.AddRows (new GridLength (1, star), new GridLength (2, star)); grid.AddChild (new MyContentControl (50, 50), 0, 0, 0, 0); CreateAsyncTest (grid, () => { grid.CheckRowHeights ("#1", 70, 140); grid.CheckMeasureArgs ("#1b", new Size (100, 70)); grid.AddRows (GridLength.Auto); grid.Reset (); }, () => { grid.CheckRowHeights ("#2", 70, 140, 0); grid.CheckMeasureArgs ("#2b"); // MeasureOverride isn't called // Add a child to the fixed row grid.AddChild (new MyContentControl (50, 80), 2, 0, 0, 0); grid.Reset (); }, () => { grid.CheckRowHeights ("#3", 43, 87, 80); grid.CheckMeasureArgs ("#3b", new Size (100, inf), new Size (100, 43)); grid.CheckMeasureOrder ("#3c", 1, 0); // Make the child span the last two rows grid.ChangeRow (1, 1); grid.ChangeRowSpan (1, 2); grid.Reset (); }, () => { grid.CheckRowHeights ("#4", 70, 140, 0); grid.CheckMeasureArgs ("#4b", new Size (100, 70), new Size (100, 140)); grid.CheckMeasureOrder ("#4c", 0, 1); // Add another fixed row and move the large child to span both grid.AddRows (GridLength.Auto); grid.ChangeRow (1, 2); grid.Reset (); }, () => { grid.CheckRowHeights ("#5", 43, 87, 40, 40); grid.CheckMeasureArgs ("#5b", new Size (100, inf), new Size (100, 43)); grid.CheckMeasureOrder ("#5c", 1, 0); } ); }
public void ChangingGridPropertiesInvalidates () { // Normally remeasuring with the same width/height does not result in MeasureOverride // being called, but if we change a grid property, it does. MyGrid g = new MyGrid (); g.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto); g.AddColumns (GridLength.Auto, GridLength.Auto, GridLength.Auto); g.AddChild (ContentControlWithChild (), 0, 0, 1, 1); g.Measure (new Size (50, 50)); g.CheckMeasureArgs ("#1", new Size (inf, inf)); g.Reset (); g.Measure (new Size (50, 50)); g.CheckMeasureArgs ("#2"); g.ChangeRowSpan (0, 2); g.Reset (); g.Measure (new Size (50, 50)); g.CheckMeasureArgs ("#3", new Size (inf, inf)); g.ChangeColSpan (0, 2); g.Reset (); g.Measure (new Size (50, 50)); g.CheckMeasureArgs ("#4", new Size (inf, inf)); g.ChangeRow (0, 1); g.Reset (); g.Measure (new Size (50, 50)); g.CheckMeasureArgs ("#5", new Size (inf, inf)); g.ChangeCol (0, 1); g.Reset (); g.Measure (new Size (50, 50)); g.CheckMeasureArgs ("#6", new Size (inf, inf)); }
public void StarRows () { GridUnitType star = GridUnitType.Star; MyGrid grid = new MyGrid { Name = "TESTER", Width = 100, Height = 210 }; grid.AddRows (new GridLength (1, star), new GridLength (2, star)); grid.AddChild (new MyContentControl (50, 50), 0, 0, 0, 0); CreateAsyncTest (grid, () => { grid.CheckRowHeights ("#1", 70, 140); grid.CheckMeasureArgs ("#1a", new Size (100, 70)); grid.AddRows (new GridLength (30)); grid.Reset (); }, () => { grid.CheckRowHeights ("#2", 60, 120, 30); grid.CheckMeasureArgs ("#2a", new Size (100, 60)); grid.Reset (); // Add a child to the fixed row grid.AddChild (new MyContentControl (50, 80), 2, 0, 0, 0); }, () => { grid.CheckRowHeights ("#3", 60, 120, 30); grid.CheckMeasureArgs ("#3a", new Size (100, 30)); grid.Reset (); // Make the child span the last two rows grid.ChangeRow (1, 1); grid.ChangeRowSpan (1, 2); }, () => { grid.CheckRowHeights ("#4", 60, 120, 30); grid.CheckMeasureArgs ("#4a", new Size (100, 150)); grid.Reset (); // Add another fixed row and move the large child to span both grid.AddRows (new GridLength (30)); grid.ChangeRow (1, 2); }, () => { grid.CheckFinalMeasureArg ("#MeasureArgs", new Size (100, 50), new Size (100, 60)); grid.CheckRowHeights ("#5", 50, 100, 30, 30); } ); }
public void MeasureAutoRows2 () { double inf = double.PositiveInfinity; MyGrid grid = new MyGrid (); grid.AddColumns (new GridLength (50), new GridLength (50)); grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto); MyContentControl c = new MyContentControl (50, 50); grid.AddChild (c, 0, 0, 2, 1); grid.AddChild (new MyContentControl (50, 60), 0, 1, 1, 1); grid.AddChild (new MyContentControl (50, 20), 0, 1, 1, 1); grid.Measure (new Size (500, 400)); grid.CheckMeasureArgs ("#1", new Size (50, inf), new Size (50, inf), new Size (50, inf)); grid.CheckMeasureOrder ("#2", 0, 1, 2); Assert.AreEqual (new Size (100, 60), grid.DesiredSize, "#2"); grid.ChangeRow (2, 1); grid.Reset (); grid.Measure (new Size (500, 400)); grid.CheckMeasureArgs ("#3", new Size (50, inf)); grid.CheckMeasureOrder ("#4", 2); Assert.AreEqual (new Size (100, 80), grid.DesiredSize, "#4"); grid.InvalidateSubtree (); ((FrameworkElement) c.Content).Height = 100; grid.Reset (); grid.Measure (new Size (500, 400)); grid.CheckMeasureArgs ("#5", new Size (50, inf), new Size (50, inf), new Size (50, inf)); Assert.AreEqual (new Size (100, 100), grid.DesiredSize, "#6"); grid.Reset (); grid.ChangeRow (2, 2); grid.Measure (new Size (500, 400)); grid.CheckMeasureArgs ("#7", new Size (50, inf)); grid.CheckMeasureOrder ("#8", 2); Assert.AreEqual (new Size (100, 120), grid.DesiredSize, "#8"); }