Я занимаюсь разработкой приложения WPF 4.0, в котором мне нужно создать сетку, содержащую столбец с текстовым полем или раскрывающимся списком в зависимости от строки. Пример:
| Name | Value | Help |
| PROP1A | [textbox] | Description of prop1a |
| Prop2A | [dropdown v] | Description of prop2a |
| Prop3A | [textbox] [x checkbox] | Description of prop2a |
| Prop4A | [dropdown v] | Description of prop2a |
| etc...
Идея состоит в том, что у пользователя есть таблица значений, которую он должен ввести, и мы отображаем имя и описание для каждого значения рядом. Некоторые значения являются числами, которые необходимо вводить с помощью текстового поля, в то время как другие представляют собой текстовое поле плюс флажок, а третьи представляют собой раскрывающийся список.
Моя первоначальная мысль заключалась в том, чтобы реализовать это как коллекцию того, что я назову RowDescriptor
s, которая будет указывать имя, тип ввода и справочную информацию (которая является просто текстом), а затем использовать привязку для связывания коллекции в DataGrid. По сути, они будут действовать как ViewModel, и установка значения в DataGrid будет проходить через ViewModel к фактической модели (как в типичном случае для приложения MVVM).
Когда я просматривал имеющуюся у меня документацию, я не смог найти нигде, где обсуждался бы способ динамического изменения типа столбца, как это. Теперь я склоняюсь к использованию Grid и раскладке входов вручную (все еще используя Binding, но привязывая каждый элемент отдельно). С моей стороны это будет гораздо больше ручного труда, поэтому я хотел выяснить, есть ли относительно простой способ реализации моей первой идеи. Похоже, что я должен быть в состоянии что-то сделать с DataGridTemplateColumn, но я относительно новичок в WPF и точно не знаю, как мне поступить.