예제 #1
0
        public void GridStarsTest()
        {
            Grid panel = new Grid();

            panel.ColumnDefinitions.Add(new ColumnDefinition {
                Width = GridLength.FromStars(1)
            });
            panel.ColumnDefinitions.Add(new ColumnDefinition {
                Width = GridLength.FromStars(2), MaxWidth = 200
            });
            panel.ColumnDefinitions.Add(new ColumnDefinition {
                Width = GridLength.FromStars(3), MaxWidth = 100
            });

            panel.RowDefinitions.Add(new RowDefinition());

            panel.Arrange(new Rect(60, 10));
            Assert.IsTrue(panel.ColumnDefinitions[0].ActualWidth.IsClose(10));
            Assert.IsTrue(panel.ColumnDefinitions[1].ActualWidth.IsClose(20));
            Assert.IsTrue(panel.ColumnDefinitions[2].ActualWidth.IsClose(30));
            Assert.IsTrue(panel.ColumnDefinitions.Sum(column => column.ActualWidth).IsClose(60));

            panel.Arrange(new Rect(200, 10));
            Assert.IsTrue(panel.ColumnDefinitions[0].ActualWidth.IsClose(200.0 / 6));
            Assert.IsTrue(panel.ColumnDefinitions[1].ActualWidth.IsClose(200.0 / 3));
            Assert.IsTrue(panel.ColumnDefinitions[2].ActualWidth.IsClose(100));
            Assert.IsTrue(panel.ColumnDefinitions.Sum(column => column.ActualWidth).IsClose(200));

            panel.Arrange(new Rect(400, 10));
            Assert.IsTrue(panel.ColumnDefinitions[0].ActualWidth.IsClose(100));
            Assert.IsTrue(panel.ColumnDefinitions[1].ActualWidth.IsClose(200));
            Assert.IsTrue(panel.ColumnDefinitions[2].ActualWidth.IsClose(100));
            Assert.IsTrue(panel.ColumnDefinitions.Sum(column => column.ActualWidth).IsClose(400));

            panel.Arrange(new Rect(600, 10));
            Assert.IsTrue(panel.ColumnDefinitions[0].ActualWidth.IsClose(300));
            Assert.IsTrue(panel.ColumnDefinitions[1].ActualWidth.IsClose(200));
            Assert.IsTrue(panel.ColumnDefinitions[2].ActualWidth.IsClose(100));
            Assert.IsTrue(panel.ColumnDefinitions.Sum(column => column.ActualWidth).IsClose(600));
        }
예제 #2
0
        public void GridLayoutTest()
        {
            //  1* |    2*   |      3*
            // [c1]|[--c2---]|[-----c3-----]
            // [-----c4-----]|
            //     |[----------c5----------]

            Grid panel = new Grid();

            panel.ColumnDefinitions.Add(new ColumnDefinition {
                Width = GridLength.FromStars(1)
            });
            panel.ColumnDefinitions.Add(new ColumnDefinition {
                Width = GridLength.FromStars(2)
            });
            panel.ColumnDefinitions.Add(new ColumnDefinition {
                Width = GridLength.FromStars(3)
            });

            panel.RowDefinitions.Add(new RowDefinition());
            panel.RowDefinitions.Add(new RowDefinition());
            panel.RowDefinitions.Add(new RowDefinition());

            FrameworkElement child1 = new FrameworkElement {
                Height = 100
            };
            FrameworkElement child2 = new FrameworkElement {
                Height = 100
            };
            FrameworkElement child3 = new FrameworkElement {
                Height = 100
            };
            FrameworkElement child4 = new FrameworkElement {
                Height = 100
            };
            FrameworkElement child5 = new FrameworkElement {
                Height = 100
            };

            Grid.SetColumn(child1, 0);
            Grid.SetColumn(child2, 1);
            Grid.SetColumn(child3, 2);
            Grid.SetColumn(child4, 0);
            Grid.SetColumn(child5, 1);
            Grid.SetRow(child4, 1);
            Grid.SetRow(child5, 2);
            Grid.SetColumnSpan(child4, 2);
            Grid.SetColumnSpan(child5, 2);

            panel.Children.Add(child1);
            panel.Children.Add(child2);
            panel.Children.Add(child3);
            panel.Children.Add(child4);
            panel.Children.Add(child5);

            panel.Measure(new Size(600, 600));

            Assert.AreEqual(new Size(0, 300), panel.DesiredSize);

            panel.Arrange(new Rect(600, 300));

            Assert.AreEqual(new Size(600, 300), panel.VisualSize);

            Assert.AreEqual(new Size(100, 100), child1.VisualSize);
            Assert.AreEqual(new Size(200, 100), child2.VisualSize);
            Assert.AreEqual(new Size(300, 100), child3.VisualSize);
            Assert.AreEqual(new Size(300, 100), child4.VisualSize);
            Assert.AreEqual(new Size(500, 100), child5.VisualSize);

            Assert.AreEqual(new Point(0, 0), child1.VisualOffset);
            Assert.AreEqual(new Point(100, 0), child2.VisualOffset);
            Assert.AreEqual(new Point(300, 0), child3.VisualOffset);
            Assert.AreEqual(new Point(0, 100), child4.VisualOffset);
            Assert.AreEqual(new Point(100, 200), child5.VisualOffset);
        }