如何呈现一个WPF网格,该网格具有14个相等大小的列和1个列,其大小为先前相等列的30%

时间:2016-08-16 18:08:47

标签: c# wpf grid-layout

我有一个正在叠加图像的网格。用户将以米为单位输入总图像长度和宽度。他们还将输入他们想要的列和行的大小。 例如,图像长143米,宽216米,他们希望网格单元宽10米,高15米。 所以我需要14个相等宽度的单元格和1个单元格,这是前一个14的宽度的30%。我通过循环添加列

FlowLayout

2 个答案:

答案 0 :(得分:0)

问题是在最后一行的某些地方。

答案 1 :(得分:0)

        public MainWindow()
        {
            InitializeComponent();
            SetupGrid(143);
        }

        private void SetupGrid(double width)
        {
            LayoutRoot.ShowGridLines = true;
            int numColumns = Convert.ToInt32(width / 10);
            double remainder = width % 10;
            //create whole columns
            for (int i = 0; i < numColumns; i++)
            {
                ColumnDefinition col = new ColumnDefinition();
                col.Width = new GridLength(10, GridUnitType.Star);
                LayoutRoot.ColumnDefinitions.Add(col);
                //adding a textblock just so show the placement
                TextBlock t = new TextBlock();
                t.HorizontalAlignment = HorizontalAlignment.Center;
                t.Text = i.ToString();
                LayoutRoot.Children.Add(t);
                Grid.SetColumn(t, i);
            }
            //create remainder
            ColumnDefinition colr = new ColumnDefinition();
            colr.Width = new GridLength(remainder, GridUnitType.Star);
            LayoutRoot.ColumnDefinitions.Add(colr);
            //adding a textblock just so show the placement
            TextBlock t2 = new TextBlock();
            t2.HorizontalAlignment = HorizontalAlignment.Center;
            t2.Text = remainder.ToString();
            LayoutRoot.Children.Add(t2);
            Grid.SetColumn(t2, numColumns + 1);
        }