【问题标题】:Is DataGrid a necessity in WPF?DataGrid 是 WPF 中的必需品吗?
【发布时间】:2010-09-12 19:21:59
【问题描述】:

我看到很多讨论正在进行,人们询问 WPF 的 DataGrid 并抱怨 Microsoft 迄今为止还没有与他们的 WPF 框架一起使用。我们知道 WPF 是一种很棒的 UI 技术,并且有 ItemsControl、DataTemplate 等概念来制作出色的 UX。甚至 WPF 也有一个更匹配的控件 - ListView,它可以很容易地被模板化,以提供比传统的 Datagrid 类显示更好的用户体验。我想说一个现成的 DataGrid 控件会扼杀或隐藏很多创造力,而且肯定会减少用户体验领域的创新。

那么您对 ​​WPF 中的 DataGrid 作为框架组件的需求有何看法?如果你觉得有必要,难道只是因为多年来世界已经习惯了 DatGrid 的数据显示方式吗?

其他一些讨论 DatGrid 的主题是 herehere

链接到WPF ToolKit - 最新的 WPF DatGrid

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

    没有人质疑您可以自己在 WPF 中制作 DataGrid 控件。 WinForms 可能也是如此,尽管它会更困难。我已经用 ListView 实现了一些功能——显示表格数据很容易,你甚至可以说它得到了很好的支持。但是,制作一个编辑ListView所需的代码量,手动编写的代码是巨大的。

    业务应用程序通常需要编辑许多表格,而您不希望有创意,您希望快速。这就是我认为需要 DataGrid 的原因。

    【讨论】:

    • 我在争论它。制作一个好的数据网格需要很长时间。我们的数据网格 V1.0(用于 WPF 的 Xceed 版本,早在 2007 年 1 月)花费了 11000 多个小时来制作,而即将推出的 Silverlight 将花费超过 17500 小时制作。稳定性、功能、良好的 API,都需要很长时间......干杯
    【解决方案2】:

    是的,DataGrid 永远不会作为基本的业务 UI 组件而消失。人们喜欢他们的电子表格,我们希望分享这份爱!

    请注意,MS 正在提供这些额外的控件 - 他们在 CodePlex 上创建了WPF Toolkit 以提供快速周转的开源部署风格。

    它已经包含一个 DataGrid 和 Calendar。

    【讨论】:

      【解决方案3】:

      这是必不可少的,但您可以使用使用 GridView 的 ListView 实现几乎相同的效果,不是吗?

      【讨论】:

      • 是的,这正是我的问题的根源。我从没想过像 WPF 这样出色的 UI 技术对 DataGrid 的巨大需求
      • 有很多东西是你无法通过这种方式获得的。对列内容进行排序只是最明显和最基本的。当然,您可以实现排序,但为什么必须这样做呢?在我的商店中,我们在基本的 ListView/GridView 中添加了超过 3000 行代码,以获得适合我们的控件。
      • 使用 ListView 不能像使用 DataGrid 那样简单地添加新行,因为 ListView 中没有 EditMode。
      【解决方案4】:

      在使用 WPF 大约 2 年之后。我会说 DataGrid 实际上只是一个美化的 ListBox(因为 [几乎] WPF 中的所有内容都是无样式的)。

      可以设置 ListBox 的样式以获取某种实体,并为每个条目显示一个“记录”控件。根据它们的灵活程度,它们可以根据传递的实体自动调整。

      【讨论】:

      • Datagrids 提供了许多您无法通过美化的列表框实现的功能。编辑、对任何字段进行排序、最终用户分组以及一个好的数据网格具有的一百个其他功能。
      • 我同意......但问题的上下文实际上是“我该怎么做?微软没有 DataGrid”我当时给出了最好的答案。今天,有一个 DataGrid 可以做很多奇妙的事情。我不是在争论。这是在不存在 DataGrid 时发布的。当时我的公司正在使用 Infragistics DataGrid。
      • 我不同意,虽然 ListBox 只控制单面数据,但制作了一个 DataGrid 来控制表格数据(列+行),这太棒了。
      • Shimmy,您希望这些列如何工作?您是否相信可以将 Grid 添加到列表控件中并将它们的列宽绑定到相同的值?然后也许分配网格中控件的上下文以具有适当的 DataContext 用于“列”绑定?我只是在争辩说,如果有人需要一个足够糟糕的 DataGrid(并且一个不可用),那么可以制造一个。我为共享的 DataGrid 列标题做了类似的事情。无论如何,我们现在有一个 DataGrid,所以不用担心 :)
      【解决方案5】:

      是的! 在 ms 未能提供的许多其他控件中。 (日期选择器,NumericControl)

      MS 应该首先为我们提供完成工作的工具,这是我对 wpf 大肆宣传的编程环境的最低期望。

      【讨论】:

      • 没错!!!我们确实需要 DatePicker、NumericControl 以及实际上所有缺少的 win-forms 控件!不仅如此,如果他们想吸引人们加入 WPF,他们应该为每个解决方案提供更多内置控件 + 内置主题,让生活更轻松!!!
      【解决方案6】:

      想不出更好的控件来显示表格数据,尤其是在您不想通过模板/开发 (Headered)ItemsControl 以使其表现得像旧的 DGV 一样重新发明轮子的业务应用程序中。我确定你看到了this

      【讨论】:

        【解决方案7】:

        DataGrid 非常适合显示绑定到后备存储的大量表格数据。

        但是在 WinForms 世界中发生的事情是人们经常将它们用于需要多元素滚动列表的所有事情。升级后的第三方 DataGrid 很快就可以使用,它允许列和字段包含按钮、组合框和图标等。

        DataGrid 之所以成为主力,是因为需要一些可以被哄骗的东西。在泛型集合出现之前,DataTables 也发生了类似的情况——当您使用大量 DataTables 时,使用 DataGrid 在 UI 中呈现它是阻力最小的路径。

        我想,当 WPF 出来的时候,很多像我一样的程序员还在这样思考,并寻找 DataGrid 概念的 WPF 端口。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-24
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 2022-01-23
          • 2013-01-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多