2013-10-20 2 views
0

В C# WPF У меня есть DataGrid -объект. Для того, чтобы заполнить DataGrid -объекта со значениями Я устанавливающим DataGrid.ItemsSource -свойства так:DataGrid - перебирать строки и значения ячеек доступа для каждой строки

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

Это работает, и я могу видеть все элементы, добавленных к someClassList внутри DataGrid ,

После пользователь нажимает кнопку, я хочу, чтобы сохранить все содержимое внутри этого 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 -метод способен печатать каждую клетку значение в Выходное окно.

Как выполнить итерацию без исключения InvalidCastException?

Существует ли более разумный подход к сохранению содержимого DataGrid в XML-файле?

ответ

3

Итерации свыше myDataGrid.ItemsSource вместо myDataGrid.Items и вы получите SomeClass экземпляров.

Смежные вопросы