我希望使用WPF以下列形式显示数据:
图片:http://i.stack.imgur.com/54CkI.png
即 - 按月分组的数据。每个月的标题行,详细信息和摘要行。具有多个列的简单表格形式的详细信息。
此外,当我尝试使用CollectionViewSource.GroupDescriptions对数据进行分组时 - 它非常慢。
所以我打算在ViewModel中对数据进行分组,并将它们作为类的对象集合返回:
public class Group
{
string Month;
IEnumerable<GroupItem> Details;
string Summary;
}
不必对列进行排序,但应该可以全局更改列的宽度 - 所有组。我觉得“游戏”会进入一种与colspan和rowspan相关的玩法。
在WPF中呈现此类数据的最佳方式是什么 - 使用哪些控件,如何定义模板。
答案 0 :(得分:0)
我在Windows窗体应用程序中使用了DevExpress中的PivotGrid,它非常棒。我认为他们也为Silverlight和WPF做了PivotGrid控件,你可以查看他们的网站。
我不会尝试使用标准控件来模仿所有这些功能,与最实际和特别开发的组件相比,您最终会得到如此多的编码并且仍然是一个平庸的结果。
P.S。这不是垃圾邮件,如果你不想去DevExpress方向,那么无论如何还有很多其他供应商,我只是建议我所知道的以及我所知道的是好的和有效的。
答案 1 :(得分:0)
您可以使用ListView并创建ItemTemplet。
这是一个基本的骨架。您可能需要设置一些宽度,并可能添加一些边框以获得正确的结果。您还需要为ListView创建一个显示详细信息的ItemTemplate。
<ListView ItemsSource="{Binding TheData}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Month}" />
<StackPanel>
<ListView ItemsSource="{Binding Details}" />
<TextBlock Text="{Binding Summary}" />
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>