Как добавить массив в виде строки в DataGrid? - PullRequest
1 голос
/ 09 июня 2019

В моей программе есть различное количество столбцов, поэтому я создал универсальное окно ввода для того, что возвращает массив строк

screen of input window

Теперь я хочу, чтобы добавить введенные данные в DataGrid, но не знаю, как

Метод DataGrid Add по умолчанию поддерживает только добавление объекта, поэтому, если я добавляю массив, он просто добавляет пробелы.

screen of empty row

                InputWindow iw = new InputWindow(inputs.ToArray());
                if (iw.ShowDialog() == true)
                {
                    try
                    {
                        var strings = iw.GetInputs();
                        ActiveDataGrid.Items.Add(strings);
                    }
                    catch (ArgumentException ex)
                    {
                        Debug.WriteLine($"{ex.Message} from InputWindow");
                    }
                }

Строки из InputWindow возвращает правильно

Как я могу добавить эти значения, соответствующие моим различным числом столбцов?

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Я предполагаю, что вы хотите добавить 1 значение из вашего массива в каждый столбец для каждого элемента в массиве. Самый простой способ сделать это - создать DataRow для каждого входного массива, отформатировав его в соответствии с количеством элементов в массиве.

    DataRow row = dataGrid.NewRow();
    foreach (var item in array)
    {
            dataGrid.Columns.Add(item);
            row[item] = item;
    }
    dataGrid.Rows.Add(row);
    dataGrid.Import.Row(row);

Это сработает, если ваш план состоит в том, чтобы обрабатывать элементы массива по одному, и вы очищаете DataGrid после каждого импорта, но если это не так, вам нужно создать некоторое количество общих DataColumns, а затем перечислить через массив и столбцы столько, сколько необходимо для размещения одного элемента в каждом столбце.

0 голосов
/ 10 июня 2019

Вы можете подумать о создании универсального класса, который содержит только строковые поля. Затем передайте свой массив классу, а затем передайте объект класса в сетку данных.

...