DataGrid - 迭代行并访问每行的单元格值

时间:2013-10-20 03:39:58

标签: c# wpf exception datagrid

C#WPF 中,我有一个 DataGrid 对象。要使用值填充 DataGrid 对象,我将设置 DataGrid.ItemsSource - 属性,如下所示:

List<SomeClass> someClassList = new List<SomeClass>();
//adding elements to someClassList (omitted for brevity)
myDataGrid.ItemsSource = someClassList;

这很有效,我可以在 DataGrid 中看到添加到someClassList的所有元素。

用户点击按钮后,我想将 DataGrid 中的所有内容保存到 XML文件

我认为迭代 DataGrid 的行会很聪明。每次迭代我都可以一次访问一行单元格内的值并将其写入 XML文件

为了执行这样的迭代,我编写了这段代码:

foreach (SomeClass someClassElement in myDataGrid.Items)
{
    Trace.WriteLine("cell-A = " + someClassElement.propertyA +
                    "cell-B = " + someClassElement.propertyB +
                    "cell-C = " + someClassElement.propertyC);
}

不幸的是,执行它(通过单击按钮)会导致 InvalidCastException ,尽管 WritLine -method能够将每个单元格值打印到输出窗口

如何在没有InvalidCastException的情况下执行迭代?

是否有更聪明的方法将DataGrid内容保存到XML文件?

1 个答案:

答案 0 :(得分:3)

迭代myDataGrid.ItemsSource代替myDataGrid.Items,您将获得SomeClass个实例。