Beispiel #1
0
        public void SizeDistributionOrder()
        {
            MyGrid grid = new MyGrid();

            grid.AddRows(Auto, Star, Auto);
            grid.AddColumns(Star, Auto, Star);

            // Auto/Auto
            grid.AddChild(ContentControlWithChild(), 0, 1, 1, 1);
            // Star/Auto
            grid.AddChild(ContentControlWithChild(), 1, 1, 1, 1);

            // If there is no spanning involved, the heights do not get distributed
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#1", 0, 1);
            grid.CheckMeasureArgs("#2", Infinity, new Size(inf, 150));

            // Span the Star/Auto down into the Auto/Auto segment too.
            grid.ChangeRowSpan(1, 2);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#3", 0, 1);
            grid.CheckMeasureArgs("#4", Infinity, new Size(inf, 150));

            // Add in an Auto/Star to see what happens
            grid.AddChild(ContentControlWithChild(), 2, 0, 1, 1);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#5", 0, 1, 2, 1);
            grid.CheckMeasureArgs("#6", Infinity, new Size(inf, inf), new Size(75, inf), new Size(inf, 150));
        }
Beispiel #2
0
		public void SizeDistributionOrder ()
		{
			MyGrid grid = new MyGrid ();
			grid.AddRows (Auto, Star, Auto);
			grid.AddColumns (Star, Auto, Star);

			// Auto/Auto
			grid.AddChild (ContentControlWithChild (), 0, 1, 1, 1);
			// Star/Auto
			grid.AddChild (ContentControlWithChild (), 1, 1, 1, 1);

			// If there is no spanning involved, the heights do not get distributed
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#1", 0, 1);
			grid.CheckMeasureArgs ("#2", Infinity, new Size (inf, 150));

			// Span the Star/Auto down into the Auto/Auto segment too.
			grid.ChangeRowSpan (1, 2);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#3", 0, 1);
			grid.CheckMeasureArgs ("#4", Infinity, new Size (inf, 150));

			// Add in an Auto/Star to see what happens
			grid.AddChild (ContentControlWithChild (), 2, 0, 1, 1);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#5", 0, 1, 2, 1);
			grid.CheckMeasureArgs ("#6", Infinity, new Size (inf, inf), new Size (75, inf), new Size (inf, 150));
		}
Beispiel #3
0
        public void ChildMargin_constWidth_constHeight_singleCell()
        {
            MyGrid g = new MyGrid();

            RowDefinition    rdef;
            ColumnDefinition cdef;

            rdef        = new RowDefinition();
            rdef.Height = new GridLength(200);
            g.RowDefinitions.Add(rdef);

            cdef       = new ColumnDefinition();
            cdef.Width = new GridLength(200);
            g.ColumnDefinitions.Add(cdef);

            g.Margin = new Thickness(5);

            Canvas c = new Canvas();

            Grid.SetRow(c, 0);
            Grid.SetColumn(c, 0);

            g.Children.Add(new MyContentControl {
                Content = c
            });

            // first test with the child sized larger than the row/column definitions
            c.Width  = 400;
            c.Height = 400;

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArgs", new Size(200, 200));
            g.Reset();
            Assert.AreEqual(new Size(200, 200), c.DesiredSize, "DesiredSize0");
            Assert.AreEqual(new Size(210, 210), g.DesiredSize, "DesiredSize1");

            g.Measure(new Size(100, 100));
            g.CheckMeasureArgs("#MeasureOverrideArgs 2");              // MeasureOverride shouldn't be called.
            g.Reset();
            Assert.AreEqual(new Size(100, 100), g.DesiredSize, "DesiredSize2");

            // now test with the child sized smaller than the row/column definitions
            c.Width  = 100;
            c.Height = 100;

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArgs 3", new Size(200, 200));
            g.Reset();
            Assert.AreEqual(new Size(210, 210), g.DesiredSize, "DesiredSize3");

            g.Measure(new Size(100, 100));
            g.CheckMeasureArgs("#MeasureOverrideArgs 4");              // MeasureOverride won't be called.
            g.Reset();
            Assert.AreEqual(new Size(100, 100), g.DesiredSize, "DesiredSize4");
        }
Beispiel #4
0
        public void TwoChildrenMargin_2Columns_1Star_and_2Star_1Row_constSize()
        {
            MyGrid g = new MyGrid();

            RowDefinition    rdef;
            ColumnDefinition cdef;

            rdef        = new RowDefinition();
            rdef.Height = new GridLength(200);
            g.RowDefinitions.Add(rdef);

            cdef       = new ColumnDefinition();
            cdef.Width = new GridLength(1, GridUnitType.Star);
            g.ColumnDefinitions.Add(cdef);

            cdef       = new ColumnDefinition();
            cdef.Width = new GridLength(2, GridUnitType.Star);
            g.ColumnDefinitions.Add(cdef);

            g.Margin = new Thickness(5);

            Canvas           c;
            MyContentControl mc;

            c        = new Canvas();
            c.Width  = 400;
            c.Height = 400;
            mc       = new MyContentControl {
                Content = c
            };
            Grid.SetRow(mc, 0);
            Grid.SetColumn(mc, 0);
            g.Children.Add(mc);

            c        = new Canvas();
            c.Width  = 400;
            c.Height = 400;
            mc       = new MyContentControl {
                Content = c
            };
            Grid.SetRow(mc, 0);
            Grid.SetColumn(mc, 1);
            g.Children.Add(mc);

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArg", new Size(inf, 200), new Size(inf, 200));
            g.Reset();
            Assert.AreEqual(new Size(810, 210), g.DesiredSize, "DesiredSize");

            g.Measure(new Size(100, 100));
            g.CheckMeasureArgs("#MeasureOverrideArg 2", new Size(30, 200), new Size(60, 200));
            g.Reset();
            Assert.AreEqual(new Size(100, 100), g.DesiredSize, "DesiredSize");
        }
Beispiel #5
0
        public void ChildMargin_autoWidth_autoHeight_singleCell()
        {
            MyGrid g = new MyGrid();

            RowDefinition    rdef;
            ColumnDefinition cdef;

            rdef        = new RowDefinition();
            rdef.Height = GridLength.Auto;
            g.RowDefinitions.Add(rdef);

            cdef       = new ColumnDefinition();
            cdef.Width = GridLength.Auto;
            g.ColumnDefinitions.Add(cdef);

            g.Margin = new Thickness(5);

            Canvas c = new Canvas();

            Grid.SetRow(c, 0);
            Grid.SetColumn(c, 0);

            g.Children.Add(new MyContentControl {
                Content = c
            });

            // first test with the child sized larger than the row/column definitions
            c.Width  = 400;
            c.Height = 400;

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArg", new Size(inf, inf));
            g.Reset();
            Assert.AreEqual(new Size(410, 410), g.DesiredSize, "DesiredSize");

            g.Measure(new Size(100, 100));
            g.CheckMeasureArgs("#MeasureOverrideArg 2");              // MeasureOverride is not called
            g.Reset();
            Assert.AreEqual(new Size(100, 100), g.DesiredSize, "DesiredSize");

            // now test with the child sized smaller than the row/column definitions
            c.Width  = 100;
            c.Height = 100;

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArg 3", new Size(inf, inf));
            g.Reset();
            Assert.AreEqual(new Size(110, 110), g.DesiredSize, "DesiredSize");

            g.Measure(new Size(100, 100));
            g.CheckMeasureArgs("#MeasureOverrideArg 4");              // MeasureOverride is not called
            g.Reset();
            Assert.AreEqual(new Size(100, 100), g.DesiredSize, "DesiredSize");
        }
Beispiel #6
0
        public void ArrangeDefaultDefinitions()
        {
            MyGrid grid = new MyGrid();

            Border b = new Border();

            b.Background = new SolidColorBrush(Colors.Red);

            Border b2 = new Border();

            b2.Background = new SolidColorBrush(Colors.Green);
            b2.Width      = b2.Height = 50;

            grid.Children.Add(new MyContentControl {
                Content = b
            });
            grid.Children.Add(new MyContentControl {
                Content = b2
            });

            grid.Measure(new Size(inf, inf));
            grid.CheckMeasureArgs("#MeasureOverrideArg", new Size(inf, inf), new Size(inf, inf));
            grid.Reset();

            grid.Measure(new Size(400, 300));
            grid.CheckMeasureArgs("#MeasureOverrideArg 2", new Size(400, 300), new Size(400, 300));
            grid.Reset();

            grid.Width  = 100;
            grid.Height = 100;

            grid.Measure(new Size(400, 300));
            grid.CheckMeasureArgs("#MeasureOverrideArg 3", new Size(100, 100), new Size(100, 100));
            grid.Reset();
            grid.Arrange(new Rect(0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height));

            Assert.AreEqual(new Size(100, 100), grid.RenderSize, "grid render");
            Assert.AreEqual(new Size(100, 100), b.RenderSize, "b render");
            Assert.AreEqual(new Size(50, 50), b2.RenderSize, "b2 render");
        }
Beispiel #7
0
        public void ArrangeTest()
        {
            MyGrid g = new MyGrid();

            RowDefinition    rdef;
            ColumnDefinition cdef;

            rdef        = new RowDefinition();
            rdef.Height = new GridLength(50);
            g.RowDefinitions.Add(rdef);

            cdef       = new ColumnDefinition();
            cdef.Width = new GridLength(100);
            g.ColumnDefinitions.Add(cdef);

            g.Margin = new Thickness(5);

            var r = new Border();
            MyContentControl mc = new MyContentControl {
                Content = r
            };

            Grid.SetRow(mc, 0);
            Grid.SetColumn(mc, 0);

            g.Children.Add(mc);

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArg", new Size(100, 50));
            g.Reset();
            Assert.AreEqual(new Size(0, 0), new Size(r.ActualWidth, r.ActualHeight), "r actual after measure");
            Assert.AreEqual(new Size(0, 0), new Size(g.ActualWidth, g.ActualHeight), "g actual after measure");

            g.Arrange(new Rect(0, 0, g.DesiredSize.Width, g.DesiredSize.Height));
            g.CheckRowHeights("#RowHeights", 50);
            Assert.AreEqual(new Size(0, 0), r.DesiredSize, "r desired 0");
            Assert.AreEqual(new Size(110, 60), g.DesiredSize, "g desired 1");

            Assert.AreEqual(new Rect(0, 0, 100, 50).ToString(), LayoutInformation.GetLayoutSlot(r).ToString(), "slot");
            Assert.AreEqual(new Size(100, 50), new Size(r.ActualWidth, r.ActualHeight), "r actual after arrange");
            Assert.AreEqual(new Size(100, 50), new Size(g.ActualWidth, g.ActualHeight), "g actual after arrange");
        }
Beispiel #8
0
		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");
		}
Beispiel #9
0
		public void MeasureAutoRows ()
		{
			MyGrid grid = new MyGrid ();

			grid.AddColumns (new GridLength (50), new GridLength (50));
			grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto);

			grid.AddChild (new MyContentControl (50, 50), 0, 0, 2, 1);
			grid.AddChild (new MyContentControl (50, 60), 0, 1, 1, 1);

			grid.Measure (new Size (0, 0));
			grid.CheckMeasureArgs ("#1", new Size (50, inf), new Size (50, inf));
			grid.Reset ();
			Assert.AreEqual (new Size (0, 0), grid.DesiredSize, "#2");

			grid.Measure (new Size (50, 40));
			grid.CheckMeasureSizes ("#3", new Size (50, inf), new Size (50, inf));
			grid.Reset ();
			Assert.AreEqual (new Size (50, 40), grid.DesiredSize, "#4");

			grid.Measure (new Size (500, 400));
			grid.CheckMeasureSizes ("#5", new Size (50, inf), new Size (50, inf));
			grid.Reset ();
			Assert.AreEqual (new Size (100, 60), grid.DesiredSize, "#6");
		}
Beispiel #10
0
		public void ChildInvalidatesGrid3 ()
		{
			var child = new MyContentControl (50, 50);
			MyGrid grid = new MyGrid ();
			grid.Children.Add (child);

			grid.Measure (new Size (100, 100));
			Assert.AreEqual (1, grid.MeasuredElements.Count, "#1");

			// Note that invalidating the measure of the content does
			// not invalidate the grid.
			((FrameworkElement) child.Content).InvalidateMeasure ();
			grid.Measure (new Size (100, 100));
			Assert.AreEqual (1, grid.MeasuredElements.Count, "#2");
		}
Beispiel #11
0
		public void ChildInvalidatesGrid2 ()
		{
			var child = new MyContentControl (50, 50);
			MyGrid grid = new MyGrid ();
			grid.Children.Add (child);

			grid.Measure (new Size (100, 100));
			Assert.AreEqual (1, grid.MeasuredElements.Count, "#1");

			child.InvalidateMeasure ();
			grid.Measure (new Size (100, 100));
			Assert.AreEqual (2, grid.MeasuredElements.Count, "#2");
		}
Beispiel #12
0
        public void AutoStarPriority()
        {
            // Test a bunch of combinations of auto/star with/without span to see
            // which order things are measured in.
            MyGrid grid = new MyGrid {
                Width = 200, Height = 200
            };

            grid.AddRows(Auto, Auto, Star, Auto, Star);
            grid.AddColumns(Auto, Star, Auto, Star, Auto);

            // Two auto-autos and one star-star
            grid.AddChild(ContentControlWithChild(), 0, 0, 1, 1);
            grid.AddChild(ContentControlWithChild(), 0, 0, 1, 1);
            grid.AddChild(ContentControlWithChild(), 4, 3, 1, 1);

            // Measured in-order. star-star is last.
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#1", 0, 1, 2);
            grid.CheckMeasureArgs("#1b", Infinity, Infinity, new Size(75, 75));

            grid.ReverseChildren();
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#2", 1, 2, 0);
            grid.CheckMeasureArgs("#2b", Infinity, Infinity, new Size(75, 75));

            // Span > 1 does not affect measure order. star-star is last.
            grid.ReverseChildren();
            grid.ChangeRowSpan(0, 2);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#3", 0, 1, 2);
            grid.CheckMeasureArgs("#3b", Infinity, Infinity, new Size(75, 75));

            grid.ReverseChildren();
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#4", 1, 2, 0);
            grid.CheckMeasureArgs("#4b", Infinity, Infinity, new Size(75, 75));

            // Elements which do not span a star row are measured first. star-star is last.
            grid.ReverseChildren();
            grid.ChangeRowSpan(0, 3);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#5", 1, 0, 2);
            grid.CheckMeasureArgs("#5b", Infinity, new Size(inf, 125), new Size(75, 75));

            grid.ReverseChildren();
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#6", 1, 2, 0);
            grid.CheckMeasureArgs("#6b", Infinity, new Size(inf, 125), new Size(75, 75));

            // Elements which do not span a star col are measured first. star-star is last.
            grid.ReverseChildren();
            grid.ChangeRowSpan(0, 1);
            grid.ChangeColSpan(0, 2);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#7", 1, 0, 2);
            grid.CheckMeasureArgs("#7b", Infinity, new Size(125, inf), new Size(75, 75));

            grid.ReverseChildren();
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#8", 1, 2, 0);
            grid.CheckMeasureArgs("#8b", Infinity, new Size(125, inf), new Size(75, 75));

            // Elements which span a Star row are measured before ones spanning a Star col. star-star is last.
            grid.ReverseChildren();
            grid.ChangeRowSpan(1, 3);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#9", 1, 0, 1, 2);
            grid.CheckMeasureArgs("#9b", Infinity, new Size(125, inf), new Size(inf, 125), new Size(75, 75));

            grid.ReverseChildren();
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#10", 1, 2, 1, 0);
            grid.CheckMeasureArgs("#10b", Infinity, new Size(125, inf), new Size(inf, 125), new Size(75, 75));

            // Auto/Auto is measured before all. star-star is last.
            grid.ReverseChildren();
            grid.AddChild(ContentControlWithChild(), 0, 0, 1, 1);
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#11", 3, 1, 0, 1, 2);
            grid.CheckMeasureArgs("#11b", Infinity, Infinity, new Size(125, inf), new Size(inf, 125), new Size(75, 75));

            grid.ReverseChildren();
            grid.ResetAndInvalidate();
            grid.Measure(new Size(200, 200));
            grid.CheckMeasureOrder("#12", 0, 2, 3, 2, 1);
            grid.CheckMeasureArgs("#12b", Infinity, Infinity, new Size(125, inf), new Size(inf, 125), new Size(75, 75));
        }
Beispiel #13
0
		public void StarRows5 ()
		{
			GridLength oneStar = new GridLength (1, GridUnitType.Star);
			MyGrid grid = new MyGrid { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center };
			grid.AddRows (oneStar, oneStar, oneStar);
			grid.AddColumns (oneStar, oneStar, oneStar);

			grid.AddChild (new MyContentControl (240, 240), 0, 0, 3, 3);
			grid.AddChild (new MyContentControl (150, 150), 0, 0, 1, 1);

			TestPanel.Children.Add (grid);
			grid.Measure (new Size (240, 240));
			grid.Arrange (new Rect (0, 0, 120, 120));

			grid.CheckRowHeights ("#1", 80, 80, 80);
			grid.CheckMeasureArgs ("#2", new Size (240, 240), new Size (80, 80));
			grid.CheckMeasureResult ("#3", new Size (240, 240), new Size (80, 80));
			grid.CheckDesired ("#4", new Size (240, 240), new Size (80, 80));
			grid.CheckMeasureOrder ("#5", 0, 1);
		}
Beispiel #14
0
		public void StarAutoConstrainedGrid2 ()
		{
			MyGrid g = new MyGrid { Width = 170, Height = 170 };
			g.AddRows (GridLength.Auto, new GridLength (1, GridUnitType.Star));
			g.AddColumns (GridLength.Auto, new GridLength (1, GridUnitType.Star));

			g.AddChild (ContentControlWithChild (), 0, 1, 1, 1);
			g.AddChild (ContentControlWithChild (), 1, 0, 1, 1);
			g.AddChild (ContentControlWithChild (), 1, 1, 1, 1);
			g.AddChild (ContentControlWithChild (), 0, 0, 1, 1);

			foreach (MyContentControl child in g.Children) {
				Assert.AreEqual (0, child.ActualHeight, "height");
				Assert.AreEqual (0, child.ActualWidth, "height");

				Rectangle content = (Rectangle)child.Content;
				Assert.AreEqual (50, content.ActualHeight, "content height");
				Assert.AreEqual (50, content.ActualWidth, "content width");
			}
			g.Measure (new Size (170, 170));
			g.CheckFinalMeasureArg ("#1",
					new Size (120, inf), new Size (inf, 120),
					new Size (120, 120), new Size (inf, inf));
		}
Beispiel #15
0
        public void ComplexLayout1()
        {
            MyGrid g = new MyGrid();

            RowDefinition    rdef;
            ColumnDefinition cdef;

            // Add rows
            rdef        = new RowDefinition();
            rdef.Height = new GridLength(200);
            g.RowDefinitions.Add(rdef);

            rdef        = new RowDefinition();
            rdef.Height = new GridLength(200);
            g.RowDefinitions.Add(rdef);

            cdef       = new ColumnDefinition();
            cdef.Width = GridLength.Auto;
            g.ColumnDefinitions.Add(cdef);

            cdef       = new ColumnDefinition();
            cdef.Width = GridLength.Auto;
            g.ColumnDefinitions.Add(cdef);

            Canvas           child1, child2, child3;
            MyContentControl mc;

            // child1
            child1        = new Canvas();
            child1.Width  = 200;
            child1.Height = 200;
            mc            = new MyContentControl {
                Content = child1
            };
            Grid.SetRow(mc, 0);
            Grid.SetColumn(mc, 0);
            Grid.SetColumnSpan(mc, 2);
            g.Children.Add(mc);

            // child2
            child2        = new Canvas();
            child2.Width  = 150;
            child2.Height = 200;
            mc            = new MyContentControl {
                Content = child2
            };
            Grid.SetRow(mc, 0);
            Grid.SetColumn(mc, 0);
            g.Children.Add(mc);

            // child3
            child3        = new Canvas();
            child3.Width  = 200;
            child3.Height = 200;
            mc            = new MyContentControl {
                Content = child3
            };
            Grid.SetRow(mc, 0);
            Grid.SetColumn(mc, 0);
            g.Children.Add(mc);

            g.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
            g.CheckMeasureArgs("#MeasureOverrideArg", new Size(inf, 200), new Size(inf, 200), new Size(inf, 200));
            g.Reset();
            Assert.AreEqual(new Size(200, 400), g.DesiredSize, "DesiredSize");
        }
Beispiel #16
0
		public void ArrangeTest ()
		{
			MyGrid g = new MyGrid ();

			RowDefinition rdef;
			ColumnDefinition cdef;

			rdef = new RowDefinition ();
			rdef.Height = new GridLength (50);
			g.RowDefinitions.Add (rdef);

			cdef = new ColumnDefinition ();
			cdef.Width = new GridLength (100);
			g.ColumnDefinitions.Add (cdef);

			g.Margin = new Thickness (5);

			var r = new Border ();
			MyContentControl mc = new MyContentControl { Content = r };
			Grid.SetRow (mc, 0);
			Grid.SetColumn (mc, 0);

			g.Children.Add (mc);

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArg", new Size (100, 50));
			g.Reset ();
			Assert.AreEqual (new Size (0,0), new Size (r.ActualWidth, r.ActualHeight), "r actual after measure");
			Assert.AreEqual (new Size (0,0), new Size (g.ActualWidth, g.ActualHeight), "g actual after measure");

			g.Arrange (new Rect (0,0,g.DesiredSize.Width,g.DesiredSize.Height));
			g.CheckRowHeights ("#RowHeights", 50);
			Assert.AreEqual (new Size (0,0), r.DesiredSize, "r desired 0");
			Assert.AreEqual (new Size (110,60), g.DesiredSize, "g desired 1");

			Assert.AreEqual (new Rect (0,0,100,50).ToString (), LayoutInformation.GetLayoutSlot (r).ToString(), "slot");
			Assert.AreEqual (new Size (100,50), new Size (r.ActualWidth, r.ActualHeight), "r actual after arrange");
			Assert.AreEqual (new Size (100,50), new Size (g.ActualWidth, g.ActualHeight), "g actual after arrange");
		}
Beispiel #17
0
		public void ComplexLayout1 ()
		{
			MyGrid g = new MyGrid ();

			RowDefinition rdef;
			ColumnDefinition cdef;

			// Add rows
			rdef = new RowDefinition ();
			rdef.Height = new GridLength (200);
			g.RowDefinitions.Add (rdef);

			rdef = new RowDefinition ();
			rdef.Height = new GridLength (200);
			g.RowDefinitions.Add (rdef);

			cdef = new ColumnDefinition ();
			cdef.Width = GridLength.Auto;
			g.ColumnDefinitions.Add (cdef);

			cdef = new ColumnDefinition ();
			cdef.Width = GridLength.Auto;
			g.ColumnDefinitions.Add (cdef);

			Canvas child1, child2, child3;
			MyContentControl mc;

			// child1
			child1 = new Canvas ();
			child1.Width = 200;
			child1.Height = 200;
			mc = new MyContentControl { Content = child1 };
			Grid.SetRow (mc, 0);
			Grid.SetColumn (mc, 0);
			Grid.SetColumnSpan (mc, 2);
			g.Children.Add (mc);

			// child2
			child2 = new Canvas ();
			child2.Width = 150;
			child2.Height = 200;
			mc = new MyContentControl { Content = child2 };
			Grid.SetRow (mc, 0);
			Grid.SetColumn (mc, 0);
			g.Children.Add (mc);

			// child3
			child3 = new Canvas ();
			child3.Width = 200;
			child3.Height = 200;
			mc = new MyContentControl { Content = child3 };
			Grid.SetRow (mc, 0);
			Grid.SetColumn (mc, 0);
			g.Children.Add (mc);

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArg", new Size (inf, 200), new Size (inf, 200), new Size (inf, 200));
			g.Reset ();
			Assert.AreEqual (new Size (200, 400), g.DesiredSize, "DesiredSize");
		}
Beispiel #18
0
		public void Child_ColSpan2_2Columns_constSize_and_1Star_1Row_constSize ()
		{
			MyGrid g = new MyGrid ();

			RowDefinition rdef;
			ColumnDefinition cdef;

			rdef = new RowDefinition ();
			rdef.Height = new GridLength (200);
			g.RowDefinitions.Add (rdef);

			cdef = new ColumnDefinition ();
			cdef.Width = new GridLength (200);
			g.ColumnDefinitions.Add (cdef);

			cdef = new ColumnDefinition ();
			cdef.Width = new GridLength (2, GridUnitType.Star);
			g.ColumnDefinitions.Add (cdef);

			g.Margin = new Thickness (5);

			Canvas c;
			MyContentControl mc;

			c = new Canvas ();
			c.Width = 400;
			c.Height = 400;
			mc = new MyContentControl { Content = c };
			Grid.SetRow (mc, 0);
			Grid.SetColumn (mc, 0);
			Grid.SetColumnSpan (mc, 2);
			g.Children.Add (mc);

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArg", new Size (inf, 200));
			g.Reset ();
			Assert.AreEqual (new Size (400, 200), c.DesiredSize, "DesiredSize0");

			Assert.AreEqual (new Size (410, 210), g.DesiredSize, "DesiredSize1");

			g.Measure (new Size (100, 100));
			g.CheckMeasureArgs ("#MeasureOverrideArg 2", new Size (200, 200));
			g.Reset ();
			Assert.AreEqual (new Size (100, 100), g.DesiredSize, "DesiredSize2");
		}
Beispiel #19
0
		public void ChildMargin_autoWidth_autoHeight_singleCell ()
		{
			MyGrid g = new MyGrid ();

			RowDefinition rdef;
			ColumnDefinition cdef;

			rdef = new RowDefinition ();
			rdef.Height = GridLength.Auto;
			g.RowDefinitions.Add (rdef);

			cdef = new ColumnDefinition ();
			cdef.Width = GridLength.Auto;
			g.ColumnDefinitions.Add (cdef);

			g.Margin = new Thickness (5);

			Canvas c = new Canvas ();

			Grid.SetRow (c, 0);
			Grid.SetColumn (c, 0);

			g.Children.Add (new MyContentControl { Content = c });

			// first test with the child sized larger than the row/column definitions
			c.Width = 400;
			c.Height = 400;

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArg", new Size (inf, inf));
			g.Reset ();
			Assert.AreEqual (new Size (410, 410), g.DesiredSize, "DesiredSize");

			g.Measure (new Size (100, 100));
			g.CheckMeasureArgs ("#MeasureOverrideArg 2"); // MeasureOverride is not called
			g.Reset ();
			Assert.AreEqual (new Size (100, 100), g.DesiredSize, "DesiredSize");

			// now test with the child sized smaller than the row/column definitions
			c.Width = 100;
			c.Height = 100;

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArg 3", new Size (inf, inf));
			g.Reset ();
			Assert.AreEqual (new Size (110, 110), g.DesiredSize, "DesiredSize");

			g.Measure (new Size (100, 100));
			g.CheckMeasureArgs ("#MeasureOverrideArg 4"); // MeasureOverride is not called
			g.Reset ();
			Assert.AreEqual (new Size (100, 100), g.DesiredSize, "DesiredSize");
		}
Beispiel #20
0
		public void ChildMargin_constWidth_constHeight_singleCell ()
		{
			MyGrid g = new MyGrid ();

			RowDefinition rdef;
			ColumnDefinition cdef;

			rdef = new RowDefinition ();
			rdef.Height = new GridLength (200);
			g.RowDefinitions.Add (rdef);

			cdef = new ColumnDefinition ();
			cdef.Width = new GridLength (200);
			g.ColumnDefinitions.Add (cdef);

			g.Margin = new Thickness (5);

			Canvas c = new Canvas ();

			Grid.SetRow (c, 0);
			Grid.SetColumn (c, 0);

			g.Children.Add (new MyContentControl { Content = c });

			// first test with the child sized larger than the row/column definitions
			c.Width = 400;
			c.Height = 400;

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArgs", new Size (200, 200));
			g.Reset ();
			Assert.AreEqual (new Size (200, 200), c.DesiredSize, "DesiredSize0");
			Assert.AreEqual (new Size (210, 210), g.DesiredSize, "DesiredSize1");

			g.Measure (new Size (100, 100));
			g.CheckMeasureArgs ("#MeasureOverrideArgs 2"); // MeasureOverride shouldn't be called.
			g.Reset ();
			Assert.AreEqual (new Size (100, 100), g.DesiredSize, "DesiredSize2");

			// now test with the child sized smaller than the row/column definitions
			c.Width = 100;
			c.Height = 100;

			g.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
			g.CheckMeasureArgs ("#MeasureOverrideArgs 3", new Size (200, 200));
			g.Reset ();
			Assert.AreEqual (new Size (210, 210), g.DesiredSize, "DesiredSize3");

			g.Measure (new Size (100, 100));
			g.CheckMeasureArgs ("#MeasureOverrideArgs 4"); // MeasureOverride won't be called.
			g.Reset ();
			Assert.AreEqual (new Size (100, 100), g.DesiredSize, "DesiredSize4");
		}
Beispiel #21
0
		public void ArrangeDefaultDefinitions ()
		{
			MyGrid grid = new MyGrid ();

			Border b = new Border ();
			b.Background = new SolidColorBrush (Colors.Red);
			
			Border b2 = new Border ();
			b2.Background = new SolidColorBrush (Colors.Green);
			b2.Width = b2.Height = 50;

			grid.Children.Add (new MyContentControl { Content = b });
			grid.Children.Add (new MyContentControl { Content = b2 });

			grid.Measure (new Size (inf, inf));
			grid.CheckMeasureArgs ("#MeasureOverrideArg", new Size (inf, inf), new Size (inf, inf));
			grid.Reset ();

			grid.Measure (new Size (400, 300));
			grid.CheckMeasureArgs ("#MeasureOverrideArg 2", new Size (400, 300), new Size (400, 300));
			grid.Reset ();
			
			grid.Width = 100;
			grid.Height = 100;
			
			grid.Measure (new Size (400,300));
			grid.CheckMeasureArgs ("#MeasureOverrideArg 3", new Size (100, 100), new Size (100, 100));
			grid.Reset ();
			grid.Arrange (new Rect (0,0,grid.DesiredSize.Width,grid.DesiredSize.Height));
			
			Assert.AreEqual (new Size (100,100), grid.RenderSize,"grid render");
			Assert.AreEqual (new Size (100,100), b.RenderSize, "b render");
			Assert.AreEqual (new Size (50,50), b2.RenderSize, "b2 render");
		}
Beispiel #22
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));
		}
Beispiel #23
0
		public void MeasureAutoAndStarRows ()
		{
			MyGrid grid = new MyGrid ();

			grid.AddColumns (new GridLength (50));
			grid.AddRows (GridLength.Auto, GridLength.Auto, new GridLength (1, GridUnitType.Star), GridLength.Auto, GridLength.Auto);

			grid.AddChild (new MyContentControl (50, 50), 0, 0, 3, 1);
			grid.AddChild (new MyContentControl (50, 60), 1, 0, 3, 1);

			grid.Measure (new Size (100, 100));
			grid.CheckRowHeights ("#1", inf, inf, 100, inf, inf);
			grid.CheckMeasureArgs ("#2", new Size (50, 100), new Size (50, 100));
			grid.CheckMeasureOrder ("#3", 0, 1);
			Assert.AreEqual (new Size (50, 60), grid.DesiredSize, "#4");

			grid.RowDefinitions [2].MaxHeight = 15;
			grid.Reset ();
			grid.Measure (new Size (100, 100));
			grid.CheckRowHeights ("#5", inf, inf, 15, inf, inf);
			grid.CheckMeasureArgs ("#6", new Size (50, 15), new Size (50, 15));
			Assert.AreEqual (new Size (50, 15), grid.DesiredSize, "#7");

			grid.RowDefinitions.Clear ();
			grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto, new GridLength (1, GridUnitType.Star), GridLength.Auto);
			grid.Reset ();
			grid.Measure (new Size (100, 100));
			grid.CheckRowHeights ("#8", inf, inf, inf, 50, inf);
			grid.CheckMeasureArgs ("#9", new Size (50, inf), new Size (50, 83.33));
			Assert.AreEqual (new Size (50, 77), grid.DesiredSize, "#10");

			grid.RowDefinitions [3].MaxHeight = 15;
			grid.Reset ();
			grid.Measure (new Size (100, 100));
			grid.CheckRowHeights ("#11", inf, inf, inf, 15, inf);
			grid.CheckMeasureArgs ("#12", new Size (50, 48.8));
			grid.CheckMeasureOrder ("#13", 1);
			Assert.AreEqual (new Size (50, 65), grid.DesiredSize, "#12");
		}
Beispiel #24
0
		public void AutoStarPriority ()
		{
			// Test a bunch of combinations of auto/star with/without span to see
			// which order things are measured in.
			MyGrid grid = new MyGrid { Width = 200, Height = 200 };
			grid.AddRows (Auto, Auto, Star, Auto, Star);
			grid.AddColumns (Auto, Star, Auto, Star, Auto);

			// Two auto-autos and one star-star
			grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1);
			grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1);
			grid.AddChild (ContentControlWithChild (), 4, 3, 1, 1);

			// Measured in-order. star-star is last.
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#1", 0, 1, 2);
			grid.CheckMeasureArgs ("#1b", Infinity, Infinity, new Size (75, 75));

			grid.ReverseChildren ();
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#2", 1, 2, 0);
			grid.CheckMeasureArgs ("#2b", Infinity, Infinity, new Size (75, 75));

			// Span > 1 does not affect measure order. star-star is last.
			grid.ReverseChildren ();
			grid.ChangeRowSpan (0, 2);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#3", 0, 1, 2);
			grid.CheckMeasureArgs ("#3b", Infinity, Infinity, new Size (75, 75));

			grid.ReverseChildren ();
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#4", 1, 2, 0);
			grid.CheckMeasureArgs ("#4b", Infinity, Infinity, new Size (75, 75));

			// Elements which do not span a star row are measured first. star-star is last.
			grid.ReverseChildren ();
			grid.ChangeRowSpan (0, 3);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#5", 1, 0, 2);
			grid.CheckMeasureArgs ("#5b", Infinity, new Size (inf, 125), new Size (75, 75));

			grid.ReverseChildren ();
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#6", 1, 2, 0);
			grid.CheckMeasureArgs ("#6b", Infinity, new Size (inf, 125), new Size (75, 75));

			// Elements which do not span a star col are measured first. star-star is last.
			grid.ReverseChildren ();
			grid.ChangeRowSpan (0, 1);
			grid.ChangeColSpan (0, 2);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#7", 1, 0, 2);
			grid.CheckMeasureArgs ("#7b", Infinity, new Size (125, inf), new Size (75, 75));

			grid.ReverseChildren ();
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#8", 1, 2, 0);
			grid.CheckMeasureArgs ("#8b", Infinity, new Size (125, inf), new Size (75, 75));

			// Elements which span a Star row are measured before ones spanning a Star col. star-star is last.
			grid.ReverseChildren ();
			grid.ChangeRowSpan (1, 3);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#9", 1, 0, 1, 2);
			grid.CheckMeasureArgs ("#9b", Infinity, new Size (125, inf), new Size (inf, 125), new Size (75, 75));

			grid.ReverseChildren ();
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#10", 1, 2, 1, 0);
			grid.CheckMeasureArgs ("#10b", Infinity, new Size (125, inf), new Size (inf, 125), new Size (75, 75));

			// Auto/Auto is measured before all. star-star is last.
			grid.ReverseChildren ();
			grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1);
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#11", 3, 1, 0, 1, 2);
			grid.CheckMeasureArgs ("#11b", Infinity, Infinity, new Size (125, inf), new Size (inf, 125), new Size (75, 75));

			grid.ReverseChildren ();
			grid.ResetAndInvalidate ();
			grid.Measure (new Size (200, 200));
			grid.CheckMeasureOrder ("#12", 0, 2, 3, 2, 1);
			grid.CheckMeasureArgs ("#12b", Infinity, Infinity, new Size (125, inf), new Size (inf, 125), new Size (75, 75));
		}
Beispiel #25
0
		public void StarAutoIsNotInfinite ()
		{
			var child1 =new MyContentControl { };
			var child2 = new MyContentControl { };
			MyGrid grid = new MyGrid ();
			grid.AddRows (Auto, Auto, Auto, Star);
			grid.AddColumns (Auto, Star);

			grid.AddChild (child1, 0, 0, 1, 1);
			grid.AddChild (child2, 0, 0, 4, 2);

			grid.Measure (new Size (100, 100));
			Assert.AreEqual (Infinity, child1.MeasureOverrideArg, "#1");
			Assert.AreEqual (new Size (100, 100), child2.MeasureOverrideArg, "#2");
		}
Beispiel #26
0
		public void ExpandInArrange_CanvasParent ()
		{
			// Measure with infinity and check results.
			MyGrid grid = new MyGrid ();
			grid.AddRows (Star);
			grid.AddColumns (Star);
			grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1);

			var parent = new Canvas ();
			parent.Children.Add (grid);
			CreateAsyncTest (parent, () => {
				grid.Reset ();
				TestPanel.Measure (Infinity);
				// Nothing is measured as the grid always uses (Inf, Inf) to measure children.
				grid.CheckMeasureArgs ("#1");
				Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#3");

				grid.Reset ();
				grid.Arrange (new Rect (0, 0, 100, 100));
				grid.CheckMeasureArgs ("#8"); // No remeasures
				grid.CheckArrangeArgs ("#9", new Size (100, 100));
				grid.CheckArrangeResult ("#10", new Size (100, 100));
				grid.CheckRowHeights ("#11", 100);
				grid.CheckColWidths ("#12", 100);

				// If we measure with a finite size, the rows/cols still expand
				// to consume the available space
				grid.Reset ();
				grid.Measure (new Size (1000, 1000));
				grid.CheckMeasureArgs ("#13", new Size (1000, 1000));
				grid.CheckMeasureResult ("#14", new Size (50, 50));
				Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#15");

				// When we pass in the desired size as the arrange arg,
				// the rows/cols use that as their height/width
				grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height));
				grid.CheckArrangeArgs ("#16", grid.DesiredSize);
				grid.CheckArrangeResult ("#17", grid.DesiredSize);
				grid.CheckRowHeights ("#18", grid.DesiredSize.Height);
				grid.CheckColWidths ("#19", grid.DesiredSize.Width);

				// If we pass in twice the desired size, the rows/cols consume that too
				grid.Reset ();
				grid.Arrange (new Rect (0, 0, 100, 100));
				grid.CheckMeasureArgs ("#20"); // No remeasures
				grid.CheckArrangeArgs ("#21", new Size (100, 100));
				grid.CheckArrangeResult ("#22", new Size (100, 100));
				grid.CheckRowHeights ("#23", 100);
				grid.CheckColWidths ("#24", 100);
			});
		}
Beispiel #27
0
		public void ExpandInArrange_OutsideTree_NoParent_UnfixedSize ()
		{
			// We always expand star rows if we're not in the live tree
			// with no parent

			// Measure with infinity and check results.
			MyGrid grid = new MyGrid ();
			grid.AddRows (Star);
			grid.AddColumns (Star);
			grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1);

			grid.Measure (Infinity);
			grid.CheckMeasureArgs ("#1", Infinity);
			grid.CheckMeasureResult ("#2", new Size (50, 50));
			Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#3");

			// When we pass in the desired size as the arrange arg,
			// the rows/cols use that as their height/width
			grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height));
			grid.CheckArrangeArgs ("#4", grid.DesiredSize);
			grid.CheckArrangeResult ("#5", grid.DesiredSize);
			grid.CheckRowHeights ("#6", grid.DesiredSize.Height);
			grid.CheckColWidths ("#7", grid.DesiredSize.Width);

			// If we pass in twice the desired size, the rows/cols consume that too
			grid.Reset ();
			grid.Arrange (new Rect (0, 0, 100, 100));
			grid.CheckMeasureArgs ("#8"); // No remeasures
			grid.CheckArrangeArgs ("#9", new Size (100, 100));
			grid.CheckArrangeResult ("#10", new Size (100, 100));
			grid.CheckRowHeights ("#11", 100);
			grid.CheckColWidths ("#12", 100);

			// If we measure with a finite size, the rows/cols still expand
			// to consume the available space
			grid.Reset ();
			grid.Measure (new Size (1000, 1000));
			grid.CheckMeasureArgs ("#13", new Size (1000, 1000));
			grid.CheckMeasureResult ("#14", new Size (50, 50));
			Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#15");

			// When we pass in the desired size as the arrange arg,
			// the rows/cols use that as their height/width
			grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height));
			grid.CheckArrangeArgs ("#16", grid.DesiredSize);
			grid.CheckArrangeResult ("#17", grid.DesiredSize);
			grid.CheckRowHeights ("#18", grid.DesiredSize.Height);
			grid.CheckColWidths ("#19", grid.DesiredSize.Width);

			// If we pass in twice the desired size, the rows/cols consume that too
			grid.Reset ();
			grid.Arrange (new Rect (0, 0, 100, 100));
			grid.CheckMeasureArgs ("#20"); // No remeasures
			grid.CheckArrangeArgs ("#21", new Size (100, 100));
			grid.CheckArrangeResult ("#22", new Size (100, 100));
			grid.CheckRowHeights ("#23", 100);
			grid.CheckColWidths ("#24", 100);
		}
Beispiel #28
0
		public void ExpandInArrange ()
		{
			// Measure with infinity and check results.
			MyGrid grid = new MyGrid ();
			grid.AddRows (Star);
			grid.AddColumns (Star);
			grid.AddChild (ContentControlWithChild (), 0, 0, 1, 1);

			grid.Measure (Infinity);
			grid.CheckMeasureArgs ("#1", Infinity);
			grid.CheckMeasureResult ("#2", new Size (50, 50));
			Assert.AreEqual (new Size (50, 50), grid.DesiredSize, "#3");
			
			// Check that everything is as expected when we pass in DesiredSize as the argument to Arrange
			grid.Arrange (new Rect (0, 0, grid.DesiredSize.Width, grid.DesiredSize.Height));
			grid.CheckArrangeArgs ("#4", grid.DesiredSize);
			grid.CheckArrangeResult ("#5", grid.DesiredSize);
			grid.CheckRowHeights ("#6", grid.DesiredSize.Height);
			grid.CheckColWidths ("#7", grid.DesiredSize.Width);

			grid.Reset ();
			grid.Arrange (new Rect (0, 0, 100, 100));
			grid.CheckMeasureArgs ("#8"); // No remeasures
			grid.CheckArrangeArgs ("#9", new Size (100, 100));
			grid.CheckArrangeResult ("#10", new Size (100, 100));
			grid.CheckRowHeights ("#11", 100);
			grid.CheckColWidths ("#12", 100);
		}