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

时间:2015-07-27 09:25:48

标签: c# wpf xaml dynamic

我有一个带网格的分组框。现在网格有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++;
    }

_

我想要实现的是我不希望行有限制,我希望网格随每个按钮单击动态增长,方法是向网格添加新行并动态调整窗口大小,或者在网格超出组合框的高度限制时向网格添加新行并使用滚动条。

2 个答案:

答案 0 :(得分:0)

将ListView与包含Combobox和TextBox的模板一起使用。将ListView绑定到视图模型中的列表。当您单击视图模型中的列表中添加新项目时,将出现一个新行

答案 1 :(得分:0)

我建议使用GridViewListView控件。另请参阅DataTamplets的工作原理。简单的例子只是为了开始它应该是什么样子。

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