【问题标题】:Re-sizing and adding grid rows on window resize dynamically重新调整大小并在窗口上添加网格行动态调整大小
【发布时间】:2015-07-27 18:28:22
【问题描述】:

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

_

我想要实现的是我不希望行有限制,我希望通过向网格添加新行并动态调整窗口大小,或者添加当超过分组框的高度限制时,将新行网格化并具有滚动条。

【问题讨论】:

  • 删除所有丑陋的代码并使用适当的 XAML 和数据绑定。
  • @HighCore 感谢一切!我还在学习 -_- !
  • 开始阅读hereherehere

标签: c# wpf xaml dynamic


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我建议使用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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2012-02-23
      • 2012-10-29
      • 1970-01-01
      • 2012-07-29
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多