C# 如何在wpf中将新行添加到datagrid中?

C# 如何在wpf中将新行添加到datagrid中?,c#,wpf,datagrid,C#,Wpf,Datagrid,我试图在每次点击按钮时插入DataGrid的所有行值, 所以,若用户在datagrid上插入三次显示三行,那个么我有一个类,里面有代码 public string Name { get; set; } public string Job { get; set; } public string Phone { get; set; } public MyGrid(string Vendors,string Jobs,string Tel) {

我试图在每次点击按钮时插入DataGrid的所有行值, 所以,若用户在datagrid上插入三次显示三行,那个么我有一个类,里面有代码

    public string Name { get; set; }
    public string Job { get; set; }
    public string Phone { get; set; }

    public MyGrid(string Vendors,string Jobs,string Tel)
    {
        Name = Vendors;
        Job = Jobs;
        Phone = Tel;
    }
我在这里调用了按钮点击事件

       static List<MyGrid> gride;
        gride = new List<MyGrid>();
        for (int i = 0; i < 3; i++)
        {
            var myg1 = new MyGrid(textBox10.Text, textBox11.Text, textBox12.Text);
            gride.Add(myg1);

        }

        dataGridView1.ItemsSource = gride; 
静态列表网格;
gride=新列表();
对于(int i=0;i<3;i++)
{
var myg1=新的MyGrid(textBox10.Text、textBox11.Text、textBox12.Text);
网格添加(myg1);
}
dataGridView1.ItemsSource=gride;
这段代码正在运行,但有一个问题,当添加数据应该显示在一行中,但在一次单击中显示在3行内时, 我想在每次点击中显示一行不同的数据。
如何在每次单击wpf中的按钮时添加新行首先,这不是一种wpf方式。使用适当的绑定来实现您想要的

以WPF方式执行的步骤:

  • 使用该集合创建并绑定ItemsSource
  • 不需要再次设置ItemsSource,只需在该集合中添加对象即可。自ObservableCollection工具INotifyCollectionChanged以来,DataGrid将自动刷新

  • 现在,对于您的代码,有两个问题

  • 若您希望一次添加项,为什么要运行for循环并三次添加对象
    删除for循环
  • 每次单击按钮,都会重新初始化列表。相反,将列表保留为实例字段,并从类构造函数中仅初始化列表一次
  • 无需在每次单击按钮时再次设置ItemsSource

  • 公共类CodeBehindClass
    {
    私有可观测收集网格;
    公共CodeBehindClass()
    {
    gride=新的ObservableCollection();
    dataGridView1.ItemsSource=gride;
    }
    私有void按钮句柄(对象发送器,RoutedEventArgs e)
    {
    var myg1=新的MyGrid(textBox10.Text、textBox11.Text、textBox12.Text);
    网格添加(myg1);
    }
    }
    
    如果只想添加一次,为什么要循环三次?然后删除for循环。@RohitVats当我删除for循环时,数据只添加了一次,但当我写入新数据并单击“添加”按钮时,行数据已更改,我想在同一行添加未更改的新行。除此之外,代码中还有几个问题。我补充了一个答案。看看能不能帮上忙。谢谢,现在可以了,但我还有一个问题,如何循环它们,以便在数据库中插入所有行您可以用于循环,然后运行与数据库中记录数相等的循环,并将它们添加到集合中。如果您不介意,我有一个问题,请告诉我如何捕获像dataGridView1这样的值单元格。行[I]。单元格[0]。值您可以参考此链接。
    public class CodeBehindClass
    {
       private ObservableCollection<MyGrid> gride;
       public CodeBehindClass()
       {
          gride = new ObservableCollection<MyGrid>();
          dataGridView1.ItemsSource = gride;
       }
    
       private void ButtonHandler(object sender, RoutedEventArgs e)
       {
          var myg1 = new MyGrid(textBox10.Text, textBox11.Text, textBox12.Text);
          gride.Add(myg1);
       }
    }