我想实现以下目标:
Day 1 | Day 2
--------------------------------------| -------------------------------------
Location 1 | Location 2 | Location 3 | Location 1 | Location 2 | Location 3
---------- | ---------- | ----------- | ---------- | ---------- | -----------
| | | | |
-----------------------------------------------------------------------------
| | | | |
-----------------------------------------------------------------------------
| | | | |
-----------------------------------------------------------------------------
| | | | |
-----------------------------------------------------------------------------
我需要显示特定日期的约会/事件列表,但按地点分组。
即使没有事件,我也想显示日期和位置(只是空白网格,所以我可以在其中添加自己的事件)。
我打算使用DataGrid
或ListBox
/ ListView
。是个好主意还是我应该以其他方式创建这些标头?你能指出我正确的方向吗?
这个问题只是关于显示空网格(具有从位置列表和日期列表生成的标题的多个列表视图或数据网格):
public IObservableCollection<DateTime> DaysToDisplay { get; set; }
public IObservableCollection<string> LocationsToDisplay { get; set; }
答案 0 :(得分:1)
您的编辑对我有点困惑:
“此问题仅与显示空网格(从位置列表和日期列表生成)有关”
因为这直接矛盾:
“我需要显示特定日期的约会/事件列表”
但是您继续编辑您的问题,其中之一是不正确的。
WPF数据网格最适合编辑,如果这就是“在此添加我自己的事件”的意思。尽管如果要验证,直接在数据网格中进行编辑会带来很多边缘情况。
数据网格不支持这样的分组标题。
您可以采用的所有解决方案都有一些局限性。
一种方法是创建“天数”模板列。然后,您将一个模板中的3个位置对齐。
动态构建这些重复列的一种方法:
https://gallery.technet.microsoft.com/WPF-Dynamic-XAML-Awkward-41b0689f
另一个选项是2个数据网格。 最上面的只有标题-这些是Days。 主数据网格在其下方,并且在同一网格中,位置是其中的列。 如果用户无法执行诸如调整大小和重新排序列之类的操作,则效果最佳。 调整大小可以通过使用转换器绑定日列的宽度来进行处理,从而将相应日列的宽度相加。
一个例子: