WPF DataGrid中的动态DataGrid列基于底层数据集(及其类型)

时间:2010-05-28 07:26:09

标签: c# wpf datagrid statistics datagridtemplatecolumn

我有一个概念性的问题。我正在将我写入WPF的一些统计类包装起来。

为此,我有两个DataGrid(-Views,目前在WinForms中)。在一个DataGrid中,每行代表另一行中的列。在那里,我可以使用“Header”,“DataType”,“ValidationBehaviour”,“DisplayType”等字段设置不同的变量(如数学/统计变量)。在那里我还可以设置它应该如何显示。某些列可以自动设置为ComboBoxColumns,一些TextBoxColumns,依此类推。

所以,现在一旦我设置了这些列,我就可以转到另一个网格并输入我的数据。例如,我可以生成(在网格1中)一个名为“年薪总额”的列,其中输入数值。另一个名为“教育”的专栏,其中“0 = NoEducation”,“1 = College Level”,“3 = Universitary”等。这些标签在组合框中显示为文本,然后我的统计引擎选择相应的值(0-3 )用于计算(即序数,名义变量)。

的sooo。在WinForms中,我基本上可以手动生成代码中的所有列,然后将我的数据添加到相应的单元格/行中。现在在WPF中,我认为必须容易实现。然而,昨天我开始使用ICustomPropertyDescriptor(也许我太厚了)没有给我我想要的结果。

基本上,我只需要能够根据我拥有的数据动态生成具有不同布局,控件(ComboBox,简单输入,日期时间)的列(和行)。但我真的不知道怎么办呢?

总结如下:

  • DataGrid 1

    • 目的是显示已在DataGrid 2中指定的列
    • 在行中,用户可以在列规格允许的列下方的行中添加任何类型的数据
  • DataGrid 2

    • 此网格中的每一行代表DataGrid 1中的一列
    • 包含名称/标题,数据类型,验证行为,默认值,数据格式等字段。
    • 还包含一个能够设置应如何显示的功能。用户可以选择,例如,ComboBoxColumn(还可以添加可用选项),DateTime,普通TextBox,CheckBox等。
    • 完成添加行后,它将自动显示为DataGrid 1中的新列

我很欣赏任何指向正确方向的指针。 提前非常非常感谢! :)

1 个答案:

答案 0 :(得分:-1)

查找DataTemplates。他们正是这样做的。 UI由相关类型决定。

Here is an MSDN article...