【问题标题】:Dynamic DataGrid columns in WPF DataGrid based on the underlying set of data (and their type)WPF DataGrid 中基于基础数据集(及其类型)的动态 DataGrid 列
【发布时间】:2011-02-25 00:26:52
【问题描述】:

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

为此,我有两个 DataGrid(-Views,目前在 WinForms 中)。在一个 DataGrid 中,每一行代表另一个中的一列。在那里,我可以使用“Header”、“DataType”、“ValidationBehaviour”、“DisplayType”等字段设置不同的变量(如数学/统计变量)。在那里我还可以设置它应该如何显示。有些 Columns 可以自动设置为 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 中显示为新列

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

【问题讨论】:

    标签: c# wpf datagrid statistics datagridtemplatecolumn


    【解决方案1】:

    查找数据模板。他们正是这样做的。 UI 由相关类型决定。

    Here is an MSDN article...

    【讨论】:

    • 一个简单的评论会比投反对票更有建设性。黄金法则。您是否希望有人如此异想天开地否决您的答案? @Slyvain
    • 不是根据社区 (meta.stackoverflow.com/questions/262038/how-to-flag-dead-links),但它确实引起了您的注意。还要理解用户在找到与他的问题相关的帖子时的挫败感,而答案是死链接,回到第一方(今天早上用户是我)。答案中的一些代码和/或链接的修复,我可以“非异想天开”并高兴地恢复我的反对票。例如,这个答案是,恕我直言,没用。
    • @Miiir 事实上,2.5 年后,该链接现在可以正常工作了。但是,除非对答案进行编辑,否则我的投票被系统锁定。斯特拉顿会编辑他的答案以包含一些与 OP 的问题相关的代码,我会很高兴地删除反对票。
    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多