我正在开发一个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...
想法是用户有一张需要输入的数值表格,我们将每个数值的名称和描述与其并列显示。其中一些数值需要使用文本框进行输入,而另一些则需要文本框加复选框,还有一些是下拉菜单。
我的初步想法是将这些值实现为一系列称为“行描述符”的对象,该对象将指定名称、输入类型和帮助信息(即文本),然后使用绑定将集合绑定到 DataGrid 上。基本上,这些将充当视图模型,并且在 DataGrid 中设置值将通过视图模型流向实际的模型(就像 MVVM 应用程序的典型情况一样)。
尽管我查看了可用的文档,但我无法找到任何地方动态更改列类型的方法。现在,我倾向于使用 Grid,手动布置输入(仍然使用 Binding,但逐个绑定每个元素)。然而,这会对我来说需要更多手动工作,因此我想知道是否有一个相对简单的实现我的第一个想法的方法。似乎我应该能够使用 DataGridTemplateColumn 实现某些功能,但我对 WPF 相对较新,不确定如何实现。