【问题标题】:WPF Nested Data Grid with fixed header and sub header具有固定标题和子标题的 WPF 嵌套数据网格
【发布时间】:2015-09-03 07:50:06
【问题描述】:
我想创建一个 WPF 嵌套数据网格,它有一个固定的标题和子标题。以下是创建嵌套网格控件所需的一些要点:-
- 主网格行的数据与主标题列对齐,嵌套网格行的数据与副标题列对齐。
- 单击主网格行时,嵌套网格行应显示与子标题列对应的数据。
- 用户必须能够展开多个主网格行。
下面是描绘我们需要的网格的图像。
如上图所示,灰色的行是与 Main header 对齐的主行,两个白色行是与 Sub header 对齐的子行(operacao、autent.、hora 等)
必须绑定到此控件的集合(主网格)具有另一个集合作为属性,其中包含子行(嵌套网格)的行。
【问题讨论】:
标签:
wpf
wpf-controls
wpfdatagrid
【解决方案1】:
此功能可以通过使用以下层次结构来实现:
- 为了创建这样的控件,您必须创建标签
与预期设计的网格分开并对齐它们
集合属性的宽度,这些属性是网格
列。
- 创建一个由数据网格继承的自定义控件并处理
数据网格中的鼠标和键事件。
- 在主 XAML 文件中使用此自定义控件,数据源等于
到主集合(列表)并将网格的列绑定到
数据源的属性。
- 在数据网格内使用带有 RowDetailsTemplate 的数据模板
这将进一步包含自定义控件(数据网格)。
- 将主集合中存在的内部集合绑定到此
内部自定义控件。这就是嵌套可以通过使用实现的方式
数据网格组件。
- 对于展开和折叠功能覆盖鼠标
自定义控件的 Down/Mouse Up 事件并处理 Row Details
控件的可见性。这是您可以控制扩展的方式
并折叠网格行。
您还可以覆盖点击事件并处理进一步的导航。此外,为了实现相同的设计,请在网格列中进行一些调整。您可以通过上述方法实现此行为。