具有分组标题/列(超级标题)的网格

时间:2019-05-15 09:12:02

标签: wpf

我想实现以下目标:

               Day 1                  |                Day 2
--------------------------------------| -------------------------------------
Location 1 | Location 2 | Location 3  | Location 1 | Location 2 | Location 3
---------- | ---------- | ----------- | ---------- | ---------- | -----------
           |            |             |            |            |           
-----------------------------------------------------------------------------
           |            |             |            |            |           
-----------------------------------------------------------------------------
           |            |             |            |            |           
-----------------------------------------------------------------------------
           |            |             |            |            |           
-----------------------------------------------------------------------------

我需要显示特定日期的约会/事件列表,但按地点分组。

即使没有事件,我也想显示日期和位置(只是空白网格,所以我可以在其中添加自己的事件)。

我打算使用DataGridListBox / ListView。是个好主意还是我应该以其他方式创建这些标头?你能指出我正确的方向吗?

这个问题只是关于显示空网格(具有从位置列表和日期列表生成的标题的多个列表视图或数据网格):

public IObservableCollection<DateTime> DaysToDisplay { get; set; }
public IObservableCollection<string> LocationsToDisplay { get; set; }

1 个答案:

答案 0 :(得分:1)

您的编辑对我有点困惑:

“此问题仅与显示空网格(从位置列表和日期列表生成)有关”

因为这直接矛盾:

“我需要显示特定日期的约会/事件列表”

但是您继续编辑您的问题,其中之一是不正确的。

WPF数据网格最适合编辑,如果这就是“在此添加我自己的事件”的意思。尽管如果要验证,直接在数据网格中进行编辑会带来很多边缘情况。

数据网格不支持这样的分组标题。

您可以采用的所有解决方案都有一些局限性。

一种方法是创建“天数”模板列。然后,您将一个模板中的3个位置对齐。

动态构建这些重复列的一种方法:

https://gallery.technet.microsoft.com/WPF-Dynamic-XAML-Awkward-41b0689f

另一个选项是2个数据网格。 最上面的只有标题-这些是Days。 主数据网格在其下方,并且在同一网格中,位置是其中的列。 如果用户无法执行诸如调整大小和重新排序列之类的操作,则效果最佳。 调整大小可以通过使用转换器绑定日列的宽度来进行处理,从而将相应日列的宽度相加。

一个例子:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/1e414159-70f6-4be3-9be5-56e4f3278366/wpf-multicolumn-super-header?forum=wpf