コード例 #1
0
        public void MeasureOrder4()
        {
            TestPanel.Width  = 500;
            TestPanel.Height = 500;

            MyGrid grid = new MyGrid();

            grid.AddRows(new GridLength(1, GridUnitType.Star), new GridLength(1, GridUnitType.Auto), new GridLength(50));
            grid.AddColumns(new GridLength(1, GridUnitType.Star), new GridLength(1, GridUnitType.Auto), new GridLength(50));
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    grid.AddChild(ContentControlWithChild(), i, j, 1, 1);
                }
            }

            CreateAsyncTest(grid, () => {
                grid.CheckMeasureOrder("#1", 4, 5, 7, 8, 1, 3, 6, 1, 0, 2);
                grid.CheckMeasureArgs("#2", new Size(inf, inf), new Size(50, inf), new Size(inf, 50),
                                      new Size(50, 50), new Size(inf, inf), new Size(400, inf),
                                      new Size(400, 50), new Size(inf, 400), new Size(400, 400), new Size(50, 400));
                grid.ReverseChildren();
                grid.Reset();
            }, () => {
                grid.CheckMeasureOrder("#3", 0, 1, 3, 4, 7, 2, 5, 7, 6, 8);
                grid.CheckMeasureArgs("#4", new Size(50, 50), new Size(inf, 50), new Size(50, inf),
                                      new Size(inf, inf), new Size(inf, inf), new Size(400, 50),
                                      new Size(400, inf), new Size(inf, 400), new Size(50, 400), new Size(400, 400));
            });
        }
コード例 #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));
        }
コード例 #3
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		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));
		}
コード例 #4
0
        public void MeasureOrder6()
        {
            TestPanel.Width  = 500;
            TestPanel.Height = 500;

            MyGrid grid = new MyGrid();

            grid.AddRows(new GridLength(1, GridUnitType.Star), new GridLength(1, GridUnitType.Auto), new GridLength(50), new GridLength(1, GridUnitType.Star), GridLength.Auto);
            grid.AddColumns(new GridLength(1, GridUnitType.Star), new GridLength(1, GridUnitType.Auto), new GridLength(1, GridUnitType.Star), new GridLength(50), GridLength.Auto);
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    grid.AddChild(ContentControlWithChild(), i, j, 1, 1);
                }
            }

            CreateAsyncTest(grid, () => {
                grid.CheckMeasureOrder("#1", 6, 8, 9, 11, 13, 14, 21, 23, 24, 1, 4, 16, 19, 5, 7, 10, 12, 20, 22, 1, 4, 16, 19, 0, 2, 3, 15, 17, 18);
                grid.CheckMeasureArgs("#2",
                                      new Size(inf, inf), new Size(50, inf), new Size(inf, inf), new Size(inf, 50), new Size(50, 50),
                                      new Size(inf, 50), new Size(inf, inf), new Size(50, inf), new Size(inf, inf), new Size(inf, inf),
                                      new Size(inf, inf), new Size(inf, inf), new Size(inf, inf), new Size(175, inf), new Size(175, inf),
                                      new Size(175, 50), new Size(175, 50), new Size(175, inf), new Size(175, inf), new Size(inf, 175),
                                      new Size(inf, 175), new Size(inf, 175), new Size(inf, 175), new Size(175, 175), new Size(175, 175),
                                      new Size(50, 175), new Size(175, 175), new Size(175, 175), new Size(50, 175));
                grid.ReverseChildren();
                grid.Reset();
            }, () => {
                grid.CheckMeasureOrder("#3", 0, 1, 3, 10, 11, 13, 15, 16, 18, 5,
                                       8, 20, 23, 2, 4, 12, 14, 17, 19, 5,
                                       8, 20, 23, 6, 7, 9, 21, 22, 24);
                grid.CheckMeasureArgs("#4",
                                      new Size(inf, inf), new Size(50, inf), new Size(inf, inf), new Size(inf, 50), new Size(50, 50),
                                      new Size(inf, 50), new Size(inf, inf), new Size(50, inf), new Size(inf, inf), new Size(inf, inf),
                                      new Size(inf, inf), new Size(inf, inf), new Size(inf, inf), new Size(175, inf), new Size(175, inf),
                                      new Size(175, 50), new Size(175, 50), new Size(175, inf), new Size(175, inf), new Size(inf, 175),
                                      new Size(inf, 175), new Size(inf, 175), new Size(inf, 175), new Size(50, 175), new Size(175, 175),
                                      new Size(175, 175), new Size(50, 175), new Size(175, 175), new Size(175, 175));
            });
        }
コード例 #5
0
        public void MeasureOrder7()
        {
            GridUnitType star = GridUnitType.Star;
            MyGrid       grid = new MyGrid {
                Name = "TESTER", Width = 100, Height = 210
            };

            grid.AddRows(new GridLength(1, star), new GridLength(2, star), new GridLength(30), new GridLength(30));
            grid.AddChild(new MyContentControl(50, 50), 0, 0, 0, 0);
            grid.AddChild(new MyContentControl(50, 80), 2, 0, 2, 0);

            CreateAsyncTest(grid,
                            () => { },
                            () => {
                grid.CheckFinalMeasureArg("#1", new Size(100, 50), new Size(100, 60));
                grid.CheckRowHeights("#2", 50, 100, 30, 30);
                grid.CheckMeasureOrder("#3", 1, 0);
                grid.CheckMeasureArgs("#4", new Size(100, 60), new Size(100, 50));
            });
        }
コード例 #6
0
        public void MeasureOrder7b()
        {
            // Items which have no star row/col are measured first. Rowspan/Colspan is taken into account
            GridUnitType star = GridUnitType.Star;
            MyGrid       grid = new MyGrid {
                Name = "TESTER", Width = 230, Height = 230
            };

            grid.AddRows(new GridLength(1, star), new GridLength(30));
            grid.AddColumns(new GridLength(30), new GridLength(1, star));

            // Create a 2x2 grid containing a child for every valid combination
            // of row, column, rowspan and colspan
            for (int row = 0; row < 2; row++)
            {
                for (int col = 0; col < 2; col++)
                {
                    for (int rowspan = row + 1; rowspan <= 2; rowspan++)
                    {
                        for (int colspan = col + 1; colspan <= 2; colspan++)
                        {
                            grid.AddChild(ContentControlWithChild(), row, col, rowspan, colspan);
                        }
                    }
                }
            }

            var o = grid.Children [6];

            grid.Children.RemoveAt(6);
            grid.Children.Add(o);
            CreateAsyncTest(grid, () => {
                grid.CheckMeasureOrder("#1", 8, 6, 7, 0, 1, 2, 3, 4, 5);
                grid.CheckMeasureArgs("#2",
                                      new Size(30, 30), new Size(230, 30), new Size(200, 30),
                                      new Size(30, 200), new Size(230, 200), new Size(30, 230),
                                      new Size(230, 230), new Size(200, 200), new Size(200, 230));
            });
        }
コード例 #7
0
        public void MeasureOrder8b()
        {
            // Items which have no star row/col are measured first. Rowspan/Colspan is taken into account
            GridUnitType star = GridUnitType.Star;
            MyGrid       grid = new MyGrid {
                Name = "TESTER", Width = 230, Height = 230
            };

            grid.AddRows(GridLength.Auto, new GridLength(1, star));
            grid.AddColumns(new GridLength(1, star), GridLength.Auto);

            // Create a 2x2 grid containing a child for every valid combination
            // of row, column, rowspan and colspan
            for (int row = 0; row < grid.RowDefinitions.Count; row++)
            {
                for (int col = 0; col < grid.ColumnDefinitions.Count; col++)
                {
                    for (int rowspan = 1; (row + rowspan) <= grid.RowDefinitions.Count; rowspan++)
                    {
                        for (int colspan = 1; (col + colspan) <= grid.ColumnDefinitions.Count; colspan++)
                        {
                            grid.AddChild(ContentControlWithChild(), row, col, rowspan, colspan);
                        }
                    }
                }
            }

            CreateAsyncTest(grid, () => {
                grid.CheckMeasureOrder("#1", 4, 5, 8, 0, 1, 5, 8, 2, 3, 6, 7);
                grid.CheckMeasureArgs("#2",
                                      new Size(inf, inf), new Size(inf, inf), new Size(inf, inf),
                                      new Size(180, inf), new Size(230, inf), new Size(inf, 230),
                                      new Size(inf, 180), new Size(180, 230), new Size(230, 230),
                                      new Size(180, 180), new Size(230, 180));
            });
        }
コード例 #8
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		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));
		}
コード例 #9
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		void MeasureOrder5Impl (bool checkOrder)
		{
			TestPanel.Width = 500;
			TestPanel.Height = 500;

			MyContentControl star = ContentControlWithChild ();
			MyContentControl pixel = ContentControlWithChild ();
			MyContentControl auto = ContentControlWithChild ();

			MyGrid grid = new MyGrid ();
			grid.AddRows (new GridLength (1, GridUnitType.Star), GridLength.Auto, new GridLength (30, GridUnitType.Pixel), new GridLength (30, GridUnitType.Pixel));
			grid.AddColumns (new GridLength (50, GridUnitType.Pixel));

			CreateAsyncTest (grid,
				() => {
					grid.AddChild (star, 0, 0, 1, 1);
					grid.AddChild (auto, 1, 0, 1, 1);
					grid.AddChild (pixel, 2, 0, 1, 1);

				}, () => {
					if (checkOrder) {
						grid.CheckMeasureOrder ("#1", 1, 2, 0);
						grid.CheckMeasureArgs ("#a", new Size (50, inf), new Size (50, 30), new Size (50, 390));
					}
					grid.CheckFinalMeasureArg ("#a2", new Size (50, 390), new Size (50, inf), new Size (50, 30));
					grid.CheckRowHeights ("#b", 390, 50, 30, 30);

					grid.Children.Clear ();
					grid.AddChild (star, 0, 0, 1, 1);
					grid.AddChild (pixel, 2, 0, 1, 1);
					grid.AddChild (auto, 1, 0, 1, 1);
					grid.Reset ();
				}, () => {
					if (checkOrder) {
						grid.CheckMeasureOrder ("#2", 1, 2, 0);
						grid.CheckMeasureArgs ("#c", new Size (50, 30), new Size (50, inf), new Size (50, 390));
					}
					grid.CheckFinalMeasureArg ("#c2", new Size (50, 390), new Size (50, 30), new Size (50, inf));
					grid.CheckRowHeights ("#d", 390, 50, 30, 30);

					grid.Children.Clear ();
					grid.AddChild (pixel, 2, 0, 1, 1);
					grid.AddChild (star, 0, 0, 1, 1);
					grid.AddChild (auto, 1, 0, 1, 1);
					grid.Reset ();
				}, () => {
					if (checkOrder) {
						grid.CheckMeasureOrder ("#3", 0, 2, 1);
						grid.CheckMeasureArgs ("#e", new Size (50, 30), new Size (50, inf), new Size (50, 390));
					}
					grid.CheckFinalMeasureArg ("#e2", new Size (50, 30), new Size (50, 390), new Size (50, inf));
					grid.CheckRowHeights ("#f", 390, 50, 30, 30);

					grid.Children.Clear ();
					grid.AddChild (pixel, 2, 0, 1, 1);
					grid.AddChild (auto, 1, 0, 1, 1);
					grid.AddChild (star, 0, 0, 1, 1);
					grid.Reset ();
				}, () => {
					if (checkOrder) {
						grid.CheckMeasureOrder ("#4", 0, 1, 2);
						grid.CheckMeasureArgs ("#g", new Size (50, 30), new Size (50, inf), new Size (50, 390));
					}
					grid.CheckFinalMeasureArg ("#g2", new Size (50, 30), new Size (50, inf), new Size (50, 390));
					grid.CheckRowHeights ("#h", 390, 50, 30, 30);

					grid.Children.Clear ();
					grid.AddChild (auto, 1, 0, 1, 1);
					grid.AddChild (pixel, 2, 0, 1, 1);
					grid.AddChild (star, 0, 0, 1, 1);
					grid.Reset ();
				}, () => {
					if (checkOrder) {
						grid.CheckMeasureOrder ("#5", 0, 1, 2);
						grid.CheckMeasureArgs ("#i", new Size (50, inf), new Size (50, 30), new Size (50, 390));
					}
					grid.CheckFinalMeasureArg ("#i2", new Size (50, inf), new Size (50, 30), new Size (50, 390));
					grid.CheckRowHeights ("#j", 390, 50, 30, 30);

					grid.Children.Clear ();
					grid.AddChild (auto, 1, 0, 1, 1);
					grid.AddChild (star, 0, 0, 1, 1);
					grid.AddChild (pixel, 2, 0, 1, 1);
					grid.Reset ();
				}, () => {
					if (checkOrder) {
						grid.CheckMeasureOrder ("#6", 0, 2, 1);
						grid.CheckMeasureArgs ("#k", new Size (50, inf), new Size (50, 30), new Size (50, 390));
					}
					grid.CheckRowHeights ("#l", 390, 50, 30, 30);
				}
			);
		}
コード例 #10
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		public void MeasureOrder8b ()
		{
			// Items which have no star row/col are measured first. Rowspan/Colspan is taken into account
			GridUnitType star = GridUnitType.Star;
			MyGrid grid = new MyGrid { Name = "TESTER", Width = 230, Height = 230 };
			grid.AddRows (GridLength.Auto, new GridLength (1, star));
			grid.AddColumns (new GridLength (1, star), GridLength.Auto);

			// Create a 2x2 grid containing a child for every valid combination
			// of row, column, rowspan and colspan
			for (int row = 0; row < grid.RowDefinitions.Count; row++)
				for (int col = 0; col < grid.ColumnDefinitions.Count; col++)
					for (int rowspan = 1; (row + rowspan) <= grid.RowDefinitions.Count; rowspan++)
						for (int colspan = 1; (col + colspan) <= grid.ColumnDefinitions.Count; colspan++)
							grid.AddChild (ContentControlWithChild (), row, col, rowspan, colspan);

			CreateAsyncTest (grid, () => {
				grid.CheckMeasureOrder ("#1", 4, 5, 8, 0, 1, 5, 8, 2, 3, 6, 7);
				grid.CheckMeasureArgs ("#2",
					new Size (inf, inf), new Size (inf, inf), new Size (inf, inf),
					new Size (180, inf), new Size (230, inf), new Size (inf, 230),
					new Size (inf, 180), new Size (180, 230), new Size (230, 230),
					new Size (180, 180), new Size (230, 180));
			});
		}
コード例 #11
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		public void AutoAndFixedRows2 ()
		{
			TestPanel.Width = 200;
			TestPanel.Height = 1000;

			MyGrid grid = new MyGrid ();
			grid.AddColumns (new GridLength (50), new GridLength (50), new GridLength (50));
			grid.AddRows (new GridLength (30), new GridLength (40), GridLength.Auto, new GridLength (50));
			grid.AddChild (new MyContentControl (600, 600), 0, 0, 4, 4);
			grid.AddChild (new MyContentControl (80, 70), 0, 1, 1, 1);
			grid.AddChild (new MyContentControl (50, 60), 1, 0, 1, 1);
			grid.AddChild (new MyContentControl (10, 500), 1, 1, 1, 1);

			CreateAsyncTest (grid, () => {
				grid.CheckRowHeights ("#1", 190, 200, 0, 210);
				grid.CheckMeasureArgs ("#2",
											new Size (150, double.PositiveInfinity),
											new Size (50, 30),
											new Size (50, 40),
											new Size (50, 40));
				grid.CheckMeasureOrder ("#3", 0, 1, 2, 3);
			});
		}
コード例 #12
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		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);
		}
コード例 #13
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		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");
		}
コード例 #14
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));
        }
コード例 #15
0
        void MeasureOrder5Impl(bool checkOrder)
        {
            TestPanel.Width  = 500;
            TestPanel.Height = 500;

            MyContentControl star  = ContentControlWithChild();
            MyContentControl pixel = ContentControlWithChild();
            MyContentControl auto  = ContentControlWithChild();

            MyGrid grid = new MyGrid();

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

            CreateAsyncTest(grid,
                            () => {
                grid.AddChild(star, 0, 0, 1, 1);
                grid.AddChild(auto, 1, 0, 1, 1);
                grid.AddChild(pixel, 2, 0, 1, 1);
            }, () => {
                if (checkOrder)
                {
                    grid.CheckMeasureOrder("#1", 1, 2, 0);
                    grid.CheckMeasureArgs("#a", new Size(50, inf), new Size(50, 30), new Size(50, 390));
                }
                grid.CheckFinalMeasureArg("#a2", new Size(50, 390), new Size(50, inf), new Size(50, 30));
                grid.CheckRowHeights("#b", 390, 50, 30, 30);

                grid.Children.Clear();
                grid.AddChild(star, 0, 0, 1, 1);
                grid.AddChild(pixel, 2, 0, 1, 1);
                grid.AddChild(auto, 1, 0, 1, 1);
                grid.Reset();
            }, () => {
                if (checkOrder)
                {
                    grid.CheckMeasureOrder("#2", 1, 2, 0);
                    grid.CheckMeasureArgs("#c", new Size(50, 30), new Size(50, inf), new Size(50, 390));
                }
                grid.CheckFinalMeasureArg("#c2", new Size(50, 390), new Size(50, 30), new Size(50, inf));
                grid.CheckRowHeights("#d", 390, 50, 30, 30);

                grid.Children.Clear();
                grid.AddChild(pixel, 2, 0, 1, 1);
                grid.AddChild(star, 0, 0, 1, 1);
                grid.AddChild(auto, 1, 0, 1, 1);
                grid.Reset();
            }, () => {
                if (checkOrder)
                {
                    grid.CheckMeasureOrder("#3", 0, 2, 1);
                    grid.CheckMeasureArgs("#e", new Size(50, 30), new Size(50, inf), new Size(50, 390));
                }
                grid.CheckFinalMeasureArg("#e2", new Size(50, 30), new Size(50, 390), new Size(50, inf));
                grid.CheckRowHeights("#f", 390, 50, 30, 30);

                grid.Children.Clear();
                grid.AddChild(pixel, 2, 0, 1, 1);
                grid.AddChild(auto, 1, 0, 1, 1);
                grid.AddChild(star, 0, 0, 1, 1);
                grid.Reset();
            }, () => {
                if (checkOrder)
                {
                    grid.CheckMeasureOrder("#4", 0, 1, 2);
                    grid.CheckMeasureArgs("#g", new Size(50, 30), new Size(50, inf), new Size(50, 390));
                }
                grid.CheckFinalMeasureArg("#g2", new Size(50, 30), new Size(50, inf), new Size(50, 390));
                grid.CheckRowHeights("#h", 390, 50, 30, 30);

                grid.Children.Clear();
                grid.AddChild(auto, 1, 0, 1, 1);
                grid.AddChild(pixel, 2, 0, 1, 1);
                grid.AddChild(star, 0, 0, 1, 1);
                grid.Reset();
            }, () => {
                if (checkOrder)
                {
                    grid.CheckMeasureOrder("#5", 0, 1, 2);
                    grid.CheckMeasureArgs("#i", new Size(50, inf), new Size(50, 30), new Size(50, 390));
                }
                grid.CheckFinalMeasureArg("#i2", new Size(50, inf), new Size(50, 30), new Size(50, 390));
                grid.CheckRowHeights("#j", 390, 50, 30, 30);

                grid.Children.Clear();
                grid.AddChild(auto, 1, 0, 1, 1);
                grid.AddChild(star, 0, 0, 1, 1);
                grid.AddChild(pixel, 2, 0, 1, 1);
                grid.Reset();
            }, () => {
                if (checkOrder)
                {
                    grid.CheckMeasureOrder("#6", 0, 2, 1);
                    grid.CheckMeasureArgs("#k", new Size(50, inf), new Size(50, 30), new Size(50, 390));
                }
                grid.CheckRowHeights("#l", 390, 50, 30, 30);
            }
                            );
        }
コード例 #16
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		public void AutoStarInfiniteChildren ()
		{
			Grid holder = new Grid { Width = 500, Height = 500 };
			MyGrid g = new MyGrid { Name = "Ted!" };
			g.AddRows (new GridLength (1, GridUnitType.Star), GridLength.Auto);
			g.AddColumns (new GridLength (1, GridUnitType.Star), GridLength.Auto);

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

			// FIXME: I think this fails because the first time the ScrollViewer measures it calculates
			// the visibility of the Horizontal/Vertical scroll bar incorrectly. It's desired size on the
			// first measure is (327, 327) whereas it should be (327, 310). A few measure cycles later and
			// it will be correct, but chews up much more CPU than it should.
			holder.Children.Add (g);
			CreateAsyncTest (holder, () => {
				g.CheckMeasureOrder ("#1", 3, 1, 2, 1, 0);
				g.CheckMeasureArgs ("#2", Infinity, Infinity, new Size (173, inf), new Size (inf, 190), new Size (173, 190));
				g.CheckMeasureResult ("#3", new Size (173, 190), new Size (327, 190), new Size (173, 310), new Size (327, 310), new Size (173, 310));
				g.CheckRowHeights ("#4", 190, 310);
				g.CheckColWidths ("#5", 173, 327);
				Assert.AreEqual (new Size (500, 500), g.DesiredSize, "#5");
			});
		}
コード例 #17
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		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");
		}
コード例 #18
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		public void MeasureOrder4 ()
		{
			TestPanel.Width = 500;
			TestPanel.Height = 500;

			MyGrid grid = new MyGrid ();
			grid.AddRows (new GridLength (1, GridUnitType.Star), new GridLength (1, GridUnitType.Auto), new GridLength (50));
			grid.AddColumns (new GridLength (1, GridUnitType.Star), new GridLength (1, GridUnitType.Auto), new GridLength (50));
			for (int i = 0; i < 3; i++)
				for (int j = 0; j < 3; j++)
					grid.AddChild (ContentControlWithChild (), i, j, 1, 1);

			CreateAsyncTest (grid, () => {
				grid.CheckMeasureOrder ("#1", 4, 5, 7, 8, 1, 3, 6, 1, 0, 2);
				grid.CheckMeasureArgs ("#2", new Size (inf, inf), new Size (50, inf), new Size (inf, 50),
											  new Size (50, 50), new Size (inf, inf), new Size (400, inf),
											  new Size (400, 50), new Size (inf, 400), new Size (400, 400), new Size (50, 400));
				grid.ReverseChildren ();
				grid.Reset ();
			}, () => {
				grid.CheckMeasureOrder ("#3", 0, 1, 3, 4, 7, 2, 5, 7, 6, 8);
				grid.CheckMeasureArgs ("#4", new Size (50, 50), new Size (inf, 50), new Size (50, inf),
											  new Size (inf, inf), new Size (inf, inf), new Size (400, 50),
											  new Size (400, inf), new Size (inf, 400), new Size (50, 400), new Size (400, 400));
			});
		}
コード例 #19
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		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);
				}
			);
		}
コード例 #20
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		public void MeasureOrder6 ()
		{
			TestPanel.Width = 500;
			TestPanel.Height = 500;

			MyGrid grid = new MyGrid ();
			grid.AddRows (new GridLength (1, GridUnitType.Star), new GridLength (1, GridUnitType.Auto), new GridLength (50), new GridLength (1, GridUnitType.Star), GridLength.Auto);
			grid.AddColumns (new GridLength (1, GridUnitType.Star), new GridLength (1, GridUnitType.Auto), new GridLength (1, GridUnitType.Star), new GridLength (50), GridLength.Auto);
			for (int i = 0; i < 5; i++)
				for (int j = 0; j < 5; j++)
					grid.AddChild (ContentControlWithChild (), i, j, 1, 1);

			CreateAsyncTest (grid, () => {
				grid.CheckMeasureOrder ("#1", 6, 8, 9, 11, 13, 14, 21, 23, 24, 1, 4, 16, 19, 5, 7, 10, 12, 20, 22, 1, 4, 16, 19, 0, 2, 3, 15, 17, 18);
				grid.CheckMeasureArgs ("#2",
					new Size (inf, inf), new Size (50, inf), new Size (inf, inf), new Size (inf, 50), new Size (50, 50),
					new Size (inf, 50), new Size (inf, inf), new Size (50, inf), new Size (inf, inf), new Size (inf, inf),
					new Size (inf, inf), new Size (inf, inf), new Size (inf, inf), new Size (175, inf), new Size (175, inf),
					new Size (175, 50), new Size (175, 50), new Size (175, inf), new Size (175, inf), new Size (inf, 175),
					new Size (inf, 175), new Size (inf, 175), new Size (inf, 175), new Size (175, 175), new Size (175, 175),
					new Size (50, 175), new Size (175, 175), new Size (175, 175), new Size (50, 175));
				grid.ReverseChildren ();
				grid.Reset ();
			}, () => {
				grid.CheckMeasureOrder ("#3", 0, 1, 3, 10, 11, 13, 15, 16, 18, 5,
											  8, 20, 23, 2, 4, 12, 14, 17, 19, 5,
											  8, 20, 23, 6, 7, 9, 21, 22, 24);
				grid.CheckMeasureArgs ("#4",
					new Size (inf, inf), new Size (50, inf), new Size (inf, inf), new Size (inf, 50), new Size (50, 50),
					new Size (inf, 50), new Size (inf, inf), new Size (50, inf), new Size (inf, inf), new Size (inf, inf),
					new Size (inf, inf), new Size (inf, inf), new Size (inf, inf), new Size (175, inf), new Size (175, inf),
					new Size (175, 50), new Size (175, 50), new Size (175, inf), new Size (175, inf), new Size (inf, 175),
					new Size (inf, 175), new Size (inf, 175), new Size (inf, 175), new Size (50, 175), new Size (175, 175),
					new Size (175, 175), new Size (50, 175), new Size (175, 175), new Size (175, 175));
			});
		}
コード例 #21
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		public void AutoAndFixedRows ()
		{
			MyGrid grid = new MyGrid ();

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

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

			// If an element spans multiple rows and one of them is *not* auto, it attempts to put itself
			// entirely inside that row
			CreateAsyncTest (grid,
				() => {
					grid.CheckRowHeights ("#1", 0, 0, 60, 0, 0);
					grid.CheckMeasureArgs ("#1b", new Size (50, inf), new Size (50, inf));
					grid.CheckMeasureOrder ("#1c", 0, 1);

					// Forcing a maximum height on the fixed row makes it distribute
					// remaining height among the 'auto' rows.
					grid.RowDefinitions [2].MaxHeight = 15;
					grid.Reset ();
				}, () => {
					// Nothing needs to get re-measured, but the heights are redistributed as expected.
					grid.CheckRowHeights ("#2", 6.25, 28.75, 15, 22.5, 0);
					grid.CheckMeasureArgs ("#2b");
					grid.CheckMeasureOrder ("#2c");

					grid.RowDefinitions.Clear ();
					grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto, new GridLength (15), GridLength.Auto);
					grid.Reset ();
				}, () => {
					// Once again there's no remeasuring, just redistributing.
					grid.CheckRowHeights ("#3", 16.66, 16.66, 16.66, 60, 0);
					grid.CheckMeasureArgs ("#3b");
					grid.CheckMeasureOrder ("#3c");
				}
			);
		}
コード例 #22
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		public void MeasureOrder7 ()
		{
			GridUnitType star = GridUnitType.Star;
			MyGrid grid = new MyGrid { Name = "TESTER", Width = 100, Height = 210 };
			grid.AddRows (new GridLength (1, star), new GridLength (2, star), new GridLength (30), new GridLength (30));
			grid.AddChild (new MyContentControl (50, 50), 0, 0, 0, 0);
			grid.AddChild (new MyContentControl (50, 80), 2, 0, 2, 0);

			CreateAsyncTest (grid, 
				() => { },
				() => {
				grid.CheckFinalMeasureArg ("#1", new Size (100, 50), new Size (100, 60));
				grid.CheckRowHeights ("#2", 50, 100, 30, 30);
				grid.CheckMeasureOrder ("#3", 1, 0);
				grid.CheckMeasureArgs ("#4", new Size (100, 60), new Size (100, 50));
			});
		}
コード例 #23
0
ファイル: GridTestAuto.cs プロジェクト: dfr0/moon
		public void AutoAndStarRows ()
		{
			TestPanel.MaxHeight = 160;
			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);

			// Elements will put themselves entirely inside a 'star' row if they ca
			CreateAsyncTest (grid,
				() => {
					grid.CheckRowHeights ("#1", 0, 0, 160, 0, 0);
					grid.CheckMeasureArgs ("#1b", new Size (50, 160), new Size (50, 160));
					grid.CheckMeasureOrder ("#1c", 0, 1);

					// Forcing a maximum height on the star row doesn't spread
					// remaining height among the auto rows.
					grid.RowDefinitions [2].MaxHeight = 15;
					grid.Reset ();
				}, () => {
					grid.CheckRowHeights ("#2", 0, 0, 15, 0, 0);
					grid.CheckMeasureArgs ("#2b", new Size (50, 15), new Size (50, 15));
					grid.CheckMeasureOrder ("#2c", 0, 1);

					grid.RowDefinitions.Clear ();
					grid.AddRows (GridLength.Auto, GridLength.Auto, GridLength.Auto, new GridLength (1, GridUnitType.Star), GridLength.Auto);
					grid.Reset ();
				}, () => {
					grid.CheckRowHeights ("#3", 16.66, 16.66, 16.66, 110, 0);
					grid.CheckMeasureArgs ("#3b", new Size (50, inf), new Size (50, 143.333));
					grid.CheckMeasureOrder ("#3c", 0, 1);

					grid.RowDefinitions [3].MaxHeight = 15;
					grid.Reset ();
				}, () => {
					grid.CheckRowHeights ("#4", 16.66, 16.66, 16.66, 15, 0);
					grid.CheckMeasureArgs ("#4b", new Size (50, 48.333));
					grid.CheckMeasureOrder ("#4c", 1);
				}
			);
		}
コード例 #24
0
ファイル: GridTestOrdering.cs プロジェクト: dfr0/moon
		public void MeasureOrder7b ()
		{
			// Items which have no star row/col are measured first. Rowspan/Colspan is taken into account
			GridUnitType star = GridUnitType.Star;
			MyGrid grid = new MyGrid { Name = "TESTER", Width = 230, Height = 230 };
			grid.AddRows (new GridLength (1, star), new GridLength (30));
			grid.AddColumns (new GridLength (30), new GridLength (1, star));

			// Create a 2x2 grid containing a child for every valid combination
			// of row, column, rowspan and colspan
			for (int row = 0; row < 2; row++)
				for (int col = 0; col < 2; col++)
					for (int rowspan = row + 1; rowspan <= 2; rowspan++)
						for (int colspan = col + 1; colspan <= 2; colspan++)
							grid.AddChild (ContentControlWithChild (), row, col, rowspan, colspan);

			var o = grid.Children [6];
			grid.Children.RemoveAt (6);
			grid.Children.Add (o);
			CreateAsyncTest (grid, () => {
				grid.CheckMeasureOrder ("#1", 8, 6, 7, 0, 1, 2, 3, 4, 5);
				grid.CheckMeasureArgs ("#2",
					new Size (30, 30), new Size (230, 30), new Size (200, 30),
					new Size (30, 200), new Size (230, 200), new Size (30, 230),
					new Size (230, 230), new Size (200, 200), new Size (200, 230));
			});
		}