WPF DataGrid:如何在DataGrid中迭代以获取行和列?

如何在C#中使用Forms DataGridView迭代WPF DataGrid的行和列?

例如,如果您有Forms DataGridView,您可以执行以下操作:

for(int i = 0; i < formsDataGrid1.Rows.Count; i++) { MessageBox.Show(formsDataGrid1.Rows[i].ToString()); for(int j = 0; j < formsDataGrid1.Columns.Count; j++) MessageBox.Show(formsDataGrid1.Rows[i].Cells[j].ToString()); } 

感谢您的任何帮助!

**编辑:

我想这样做的原因是用户将使用DataGrid在DataGrid的第二列中输入某些信息。 此外,此DataGrid有多行,我希望能够获取该数据并使用它更新数据库。

通常,您不这样做:您访问基础数据源而不是DataGrid本身。 例如,假设数据源是IEnumerable

 foreach(Foo f in foos) { MessageBox.Show(f.Name); } 

编辑:

您不需要显式访问网格的特定单元格:如果网格绑定到对象列表,则当用户编辑网格中的相应单元格时,对象的属性将自动更新。

带有联系人列表的简单示例:

  public class Contact { public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } } ... ObservableCollection contacts = new ObservableCollection(); dataGrid.ItemsSource = contacts; ... 

dg是您的XAML DataGrid x:名称

  for (int i = 0; i < dg.Items.Count; i++) { DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i); for (int j = 0; j < dg.Columns.Count; j++) { TextBlock cellContent = dg.Columns[j].GetCellContent(row) as TextBlock; Console.WriteLine(cellContent.Text); } } 

尝试使用Grid.Column[x].GetCellContent(Row[y])方法