【问题标题】:Show parent / child rows in same datagrid在同一数据网格中显示父/子行
【发布时间】:2012-03-19 19:06:03
【问题描述】:

寻找一些关于如何最好地解决这个问题的指导。

我需要创建一个显示一些父行的数据网格,并且在每个父行上我们都有一个展开/折叠按钮。单击此按钮时,将导致一些相关的子行显示在父行下。

我已经通过在父数据网格上使用 rowdetailstemplate 来实现这一点,该模板在展开时会显示另一个数据网格,然后显示相关的子行。这个较早的问题Displaying hierarchal parent child data in WPF DataGrid 显示了详细信息..

这可以正常工作,但问题是每个父行有效地为子行提供了一个单独的数据网格,因此使用键盘导航之类的操作效果不太好,因为跳过了子行详细信息区域,我们唯一要做的就是导航是父级。

其他问题是当我们用鼠标选择子行时,我们最终会得到几行突出显示为选中的行。这是可以理解的,因为每个网格都是一个单独的控件。

目的是在选择、导航等方面将子行与父行一样对待。

有人对如何解决这个问题有任何指示或指导吗?

谢谢

【问题讨论】:

  • 用户是否需要能够编辑子行数据?
  • 所以,用户不能编辑数据,但他们需要能够导航到每个单独的数据项吗?为什么?复制/粘贴?
  • 他们必须能够将焦点设置在行上,以允许他们有效地选择行来触发操作、触发弹出式编辑表单等。

标签: wpf datagrid wpfdatagrid


【解决方案1】:

WPF DataGrid 不能用于很容易的分层树视图样式表示。有一个TreeListView 控件,但它在虚拟化、编辑、单元格\行选择等方面不如复杂的 WPF 数据网格。但鉴于您的数据网格将是只读的并且您的选择是逐行的,您可以将样式应用于此控件使它看起来像一个 WPF 数据网格。

【讨论】:

  • 是的,数据是只读的,但可能有大量的行/列,所以由于缺乏虚拟化,我一直远离树视图。
  • 您可能不得不使用像 infragistics 这样的 3rd 方 gruid。只是好奇地问一下,您的层次结构可以有多少行以及有多少层深?
  • 嗨,我的老板并不热衷于第三方控件,但我和你一样,为什么要重新发明轮子。数据只有一层深,是许多孩子的父母。可能是 2000 行加 40 列。
猜你喜欢
  • 1970-01-01
  • 2015-06-14
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
相关资源
最近更新 更多