我有一个概念性的问题。我正在将我编写的一些统计类包装到 WPF 中。
为此,我有两个 DataGrid(-Views,目前在 WinForms 中)。在一个 DataGrid 中,每一行代表另一行中的一列。我可以在那里设置不同的变量(如数学/统计变量),其中包含“Header”、“DataType”、“ValidationBehaviour”、“DisplayType”等字段。我还可以在那里设置它的显示方式。一些列可以自动设置为 ComboBoxColumns,一些 TextBoxColumns,等等。
所以,现在一旦我设置了这些列,我就可以转到另一个网格并输入我的数据。例如,我可能已经生成(在网格 1 中)一个名为“年度总工资”的列,其中输入了数值。另一个名为“教育”的列,其中包含“0=NoEducation”、“1=College Level”、“3=Universitary”等。这些标签在组合框中显示为文本,然后我后面的统计引擎选择相应的值(0-3 ) 用于计算(即序数、名义变量)。
太好了。在 WinForms 中,我基本上可以在代码中手动生成所有列,然后将我的数据添加到相应的单元格/行中。现在在 WPF 中,我认为这一定很容易实现。然而,昨天我开始使用 ICustomPropertyDescriptor,它(也许我太厚了)没有给我想要的结果。
基本上,我只需要能够根据我拥有的数据动态生成具有不同布局、控件(组合框、简单输入、日期时间)的列(和行)。但我真的不知道该怎么做?
总结一下:
数据网格 1
- 目的是显示已在 DataGrid 2 中指定的列
- 在行中,用户可以在列规范允许的列下方的行中添加任何类型的数据
数据网格 2
- 此网格中的每一行代表 DataGrid 1 中的一列
- 包含名称/标题、数据类型、验证行为、默认值、数据格式等字段。
- 还包含一个能够设置其显示方式的函数。用户可以从例如 ComboBoxColumn(并添加可用选项)、DateTime、普通 TextBox、CheckBox 等中进行选择。
- 添加一行后,它会自动显示为 DataGrid 1 中的新列
如果有任何指向正确方向的指示,我将不胜感激。提前非常非常感谢! :)
最佳答案
查找数据模板。他们正是这样做的。 UI 由相关类型决定。
关于c# - WPF DataGrid 中基于基础数据集(及其类型)的动态 DataGrid 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2927295/