在窗口上动态调整大小和添加网格行

本文关键字:添加 网格 窗口 动态 调整 | 更新日期: 2023-09-27 18:04:45

我有一个带网格的组框。现在这个网格有2列8行。

网格第0行第0列有一个组合框。网格第0行第1列有一个文本框。

其余的网格行为空。当程序运行时,用户单击一个按钮,其余的行分别使用组合框和文本框逐个动态填充每个按钮。

网格第1行第0列有一个组合框。网格第1行第1列有一个文本框。

网格第2行第0列有一个组合框。网格第2行第1列有一个文本框。

网格行#列0有一个组合框。网格行#列1有一个文本框。

直到到达最后一行。

这是我的按钮点击功能:

    int c = 1;
    private void AddNewNum_Click(object sender, RoutedEventArgs e)
    {
        System.Windows.Controls.TextBox txt = new System.Windows.Controls.TextBox();
        txt.Name = "txtList1PhoneNum"+c;
        txt.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        txt.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        txt.Margin = new Thickness(8, 7, 0, 0);
        txt.Height = 26;
        txt.Width = 120;
        Grid.SetColumn(txt, 1);
        Grid.SetRow(txt, c);
        List1.Children.Add(txt);
        System.Windows.Controls.ComboBox cmb = new System.Windows.Controls.ComboBox();
        cmb.Name = "cmbList1PhoneNum" + c;
        cmb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        cmb.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        cmb.Margin = new Thickness(7, 7, 0, 0);
        cmb.Height = 26;
        cmb.Width = 118;
        Grid.SetColumn(cmb, 0);
        Grid.SetRow(cmb, c);
        List1.Children.Add(cmb);
        System.Windows.Controls.TextBox txt2 = new System.Windows.Controls.TextBox();
        txt2.Name = "txtList2PhoneNum" + c;
        txt2.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        txt2.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        txt2.Margin = new Thickness(8, 7, 0, 0);
        txt2.Height = 26;
        txt2.Width = 120;
        Grid.SetColumn(txt2, 1);
        Grid.SetRow(txt2, c);
        List2.Children.Add(txt2);
        System.Windows.Controls.ComboBox cmb2 = new System.Windows.Controls.ComboBox();
        cmb2.Name = "cmbList2PhoneNum" + c;
        cmb2.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        cmb2.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        cmb2.Margin = new Thickness(7, 7, 0, 0);
        cmb2.Height = 26;
        cmb2.Width = 118;
        Grid.SetColumn(cmb2, 0);
        Grid.SetRow(cmb2, c);
        List2.Children.Add(cmb2);
        c++;
    }

_

我想要实现的是,我不希望行有一个限制,我希望网格动态增长与每个按钮单击添加新的行网格和重新调整窗口的动态大小,或添加新的行网格和滚动条时,它超过了组框的高度限制。

在窗口上动态调整大小和添加网格行

使用一个包含组合框和文本框的模板的ListView。将ListView绑定到视图模型中的列表。当您单击向视图模型中的列表添加新项时,将出现新行

我建议使用GridView, ListView控件。还要了解一下DataTamplets是如何工作的。这是一个简单的例子,只是为了开始了解它应该是什么样子。

<GridView ItemsSource="{Binding MyItemSource}">
        <GridView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <ComboBox ItemsSource="{Binding ItemComboSource}"/>
                    <TextBlock Text="{Binding ItemText}"/>
                </StackPanel>
            </DataTemplate>
        </GridView.ItemTemplate>
</GridView>