4

我需要创建一个“超级网格”作为应用程序的一部分,它将由多个冻结和滚动窗格组成。网格还要求它必须支持以下功能:

  • 显示具有“合理”滚动性能的具有 100 行的数据网格
  • 按某个字段分组,折叠/展开分组
  • 在字段内显示任何控件,例如图像、文本、组合框、按钮
  • 允许按钮和编辑字段以及只读模式
  • 允许多个垂直拆分窗格(或解决方法,多个同步网格)
  • 具有持久性的用户列重新排序
  • 用户列升序/降序排序
  • 动态插入/删除列(列选择)
  • 分组下方的第 4 个维度 – 选定行上的 RowDetails 模板
  • 允许值更新时闪烁/动画单元格/行模板

我最初的可行性表明 WPF Datagrid 几乎可以满足上述所有要求(使用繁重的模板),但是可能无法涵盖多个垂直拆分窗格。下面是我想要实现的图表:

在此处输入图像描述

我想问一下以前有没有人这样做过,如果有的话,你用的是什么网格技术。

  • 以上可以在WPF Datagrid中完成吗?我知道 Frozen columns 但这似乎仅适用于冻结前 N 列
  • 以上可以通过多个网格和同步垂直滚动位置来实现吗?
    • 如果是这样,这个解决方案是否仍然是虚拟化的?
  • 您可以推荐任何第三方网格来实现此目的吗?请注意,我们将根据内部品牌对网格进行大量样式设置,因此它必须灵活且可混合

任何意见/建议表示赞赏。

更新 - 可行性调查结果

接下来我将致力于分组和 rowdetails 模板......感谢回答者的积分!:)

4

2 回答 2

1

我已经使用DataGrid具有完美性能和终极灵活性的标准来做到这一点,但它需要一个健全的架构。数据和 UI 都需要虚拟化 - 没有控制可以取消对大量数据进行排序的成本(例如),因此如果排序发生在 UI 线程上,用户会注意到。如果您的后端支持分页和过滤器,那么您的前端可以虚拟化,并且用户永远不会知道在他们的 10000 行中只加载了 100 行。当它们滚动时,数据页面在后台加载和卸载,并且UI 永远不会停止响应。

然而,知道你在哪里工作让我怀疑你的前端是真正的主力......

于 2012-02-06T12:04:37.227 回答
1

我已经使用devexpress wpf 网格控件实现了您的大部分要求和更多要求。它不是免费的,而且有一点学习曲线(他们的文档是必不可少的),但从长远来看,它会为您节省很多时间......

于 2012-02-06T11:27:21.193 回答