Динамические столбцы DataGrid в WPF DataGrid на основе базового набора данных (и их типа) - PullRequest
2 голосов
/ 28 мая 2010

У меня вроде концептуальный вопрос. Я нахожусь в процессе упаковки некоторых классов статистики, которые я написал, в WPF.

Для этого у меня есть две DataGrid (-Views, в настоящее время в WinForms). В одной DataGrid каждая строка представляет столбец в другой. Там я могу установить различные переменные (как в математических / статистических переменных) с такими полями, как «Заголовок», «Тип данных», «ValidationBehaviour», «DisplayType». Там я также могу настроить, как это должно отображаться. Для некоторых столбцов можно автоматически установить ComboBoxColumns, для некоторых TextBoxColumns и т. Д. И т. Д.

Итак, теперь, когда я настроил эти столбцы, я могу перейти к другой сетке и ввести свои данные. Я, например, мог бы сгенерировать (в таблице 1) один столбец, называемый «Годовой валовой оклад», с вводом числовых значений. Другой столбец называется «Образование» с «0 = NoEducation», «1 = Уровень колледжа», «3 = Универсальный» и т. Д. Эти метки отображаются в виде текста в поле со списком, и моя подсистема статистики затем выбирает соответствующее значение (0-3 ) для расчетов (т.е. порядковые, номинальные переменные).

Тааак. В WinForms я мог в основном генерировать все столбцы вручную в коде и затем добавлять свои данные в соответствующие ячейки / строки. Сейчас в WPF я подумал, что это легко реализовать. Однако вчера я начал с ICustomPropertyDescriptor, который (возможно, я был слишком толстым) не дал мне результатов, которые я искал.

По сути, мне просто нужно иметь возможность динамически генерировать столбцы (и строки) с различными Layout, Controls (ComboBox, simple Input, DateTimes) на основе имеющихся у меня данных. Но я не знаю, как это сделать?

Итак, вот вкратце:

  • DataGrid 1

    • Цель - отобразить столбцы, указанные в DataGrid 2
    • В строках пользователь может добавлять любые данные в строках ниже столбцов, что разрешено в соответствии со спецификациями столбцов
  • DataGrid 2

    • Каждая строка в этой сетке представляет столбец в DataGrid 1
    • Содержит поля, такие как Имя / Заголовок, Тип данных, Поведение проверки, Значение по умолчанию, Форматирование данных и т. Д.
    • Также содержит функцию, позволяющую настроить способ ее отображения. Пользователь может выбрать, например, ComboBoxColumn (а также добавить доступные параметры), DateTime, обычный TextBox, CheckBox и т. Д.
    • После завершения добавления строки она автоматически появится как новый столбец в DataGrid 1

Буду признателен за любой указатель в правильном направлении. Спасибо, очень, очень заранее! :)

1 Ответ

0 голосов
/ 24 мая 2011

Поиск шаблонов данных. Они делают именно это. Пользовательский интерфейс определяется связанным типом.

Вот статья MSDN ...

...