如何以编程方式向WPF .Net Core 3.1中的特定行添加网格列?

问题描述 投票:0回答:1

我开始在WPF上开发应用程序,所以我对该项目完全陌生。不喜欢XAML,而是想以编程方式做所有事情,所以这是我有两行的问题,第一行是功能区按钮对于第二个,我想添加列,但仅添加第二行。

当我在第二行中添加列时,我也在第一行中获得列,我不想要那样。请采取行动,就像您没有注意到rowCount和Colummn count的硬编码int一样。

public static class GridCustomClass
    {
        static GridLength gridLength = new GridLength(0, GridUnitType.Auto);
        static GridLength gridLengthColumns = new GridLength(0, GridUnitType.Auto);
        static GridLength gridLengthColumnsStar = new GridLength(0, GridUnitType.Star);
        public static void AddFirstGridRows(Grid grid)
        {
            int rowsCount = 2;
            for (int rows = 0; rows < rowsCount; rows++)
            {
                RowDefinition rowDefinition = new RowDefinition();
                rowDefinition.Height = gridLength;
                grid.RowDefinitions.Add(rowDefinition);
            }
        }

        public static Grid AddGridColumnsForLeftPane(Grid grid)
        {
            for (int i = 0; i <3; i++)
            {
                ColumnDefinition columnDefinition = new ColumnDefinition();
                switch(i)
                {
                    case 1:
                        columnDefinition.Width = gridLengthColumnsStar;
                        break;
                    default:
                        columnDefinition.Width = gridLengthColumns;
                        break;
                }
                columnDefinition.SetValue(Grid.RowProperty, 1);
                grid.ColumnDefinitions.Add(columnDefinition);
            }
            return grid;
        }
    }




 public partial class ApplicationSettings : Window
    {
        Grid myGrid = new Grid();
        Ribbon ribbon;
        RibbonTab ribbonTab;
        RibbonGroup ribbonGroup;
        public ApplicationSettings()
        {
            InitializeComponent();

            GridCustomClass.AddFirstGridRows(myGrid);
            GridCustomClass.AddGridColumnsForLeftPane(myGrid);
            ribbon = new Ribbon();


            //Grid.SetRow(GridCustomClass.AddGridColumnsForLeftPane(myGrid), 1);
            Button btn = new Button();


            btn.SetValue(Grid.ColumnProperty, 0);
            btn.SetValue(Grid.RowProperty,1);


            //Grid.SetRow(btn, 1);

            Grid.SetRow(ribbon, 0);

            myGrid.Children.Add(ribbon);
            myGrid.Children.Add(btn);


            settingsWindow.Content = myGrid;
        }
    }

[如果有人告诉我我哪里出问题了,我会很高兴。

c# wpf grid core
1个回答
0
投票

一种选择是嵌套网格。声明仅包含一列和两行的第一个网格,然后在第0行中添加功能区。在第1行中添加第二个网格,并根据需要设置列数

© www.soinside.com 2019 - 2024. All rights reserved.