Преобразование String [] в Expando для привязки DataGrid в WPF - PullRequest
2 голосов
/ 06 января 2011

Я работаю в системе, которая анализирует файлы и импортирует их в WPF DataGrid. Файлы разбиты на строку коллекции [] и переданы мне для отображения в пользовательском интерфейсе.

Какой самый простой способ преобразовать этот набор строк [] во что-то, что может быть связано с WPF (.NET4) DataGrid?

В сторону: я бы хотел использовать Expando .....

1 Ответ

3 голосов
/ 07 января 2011

К сожалению, в моем тестировании динамические объекты, такие как Expando, еще не работают с WPF4.Однако существуют и другие проверенные и действительные методы.

Для набора String[] можно использовать DataTable, чтобы получить динамические столбцы:

var rawData = new string[][]
{
    new string[] { "R1F1", "R1F2", },
    new string[] { "R2F1", "R2F2", },
};
var fieldNames = Enumerable.Range(1, rawData[0].Length).Select(field => "Field" + field);
var table = new DataTable();
table.Columns.AddRange(fieldNames.Select(fieldName => new DataColumn(fieldName)).ToArray());
foreach (var record in rawData)
{
    DataRow row = table.NewRow();
    for (int i = 0; i < record.Length; i++)
    {
        row[i] = record[i];
    }
    table.Rows.Add(row);
}
DataContext = table;

вместес XAML следующим образом:

<Grid>
    <DataGrid ItemsSource="{Binding}"/>
</Grid>

приводит к:

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...