关于c#:WPF DataGrid自定义分组

WPF DataGrid custom grouping

我是WPF的新手,需要一些有关如何为DataGrid实现自定义分组设置的建议。我知道普通的wpf DataGrid可以进行分组,但是可能无法通过糟糕的第三世界网络传输50万条记录,然后又无法通过便宜,便宜且有5年以上历史的PC进行数据爬网了。在非洲,公司通常会投资于像样的服务器设置,但是对于最终用户机器来说……可悲的是,任何仍然可以开机的机器都可以。因此,我需要在服务器上进行所有工作,以使最终用户PC只需要做最少的工作即可仅渲染屏幕上所需的内容。 Winforms,wpf甚至HTML就是这种情况。

首先,我们已经有一个运行良好的Web前端。这有点像我们的概念证明版本。当前,我正在重新设计大多数后端逻辑,以使其在wcf服务中运行,然后将web和wpf前端连接到同一服务。

我已经完成了分组服务器端的排序顺序,然后只从结果集中提取了需要发送到前端的几条记录。我将每一行标记为Header,Data或Footer,然后在客户端上,我从结果集的顶部一直运行到底部,并适当地渲染每一行。下面是一个或多或少我们想要的示例,并将页面数设置为10。请注意,这只是随机的垃圾数据。

Example

这里要注意的重要一点是,只有属于Open Group的记录才发送到客户端。图像中的5个封闭组在客户端前端没有任何子记录。仅当组为"打开"时,来自服务器的结果集才会包含要在屏幕上呈现的子记录。如果您计算组页眉和详细信息行,您将看到总数为10。组页脚不计入页面大小限制。因此,总共我只从服务器向客户端发送了20行(结果集中有页脚)信息,而没有在表中实际发送有61列的1000条记录。

这样做的速度要比潜在地向用户计算机发送10000条记录然后在用户计算机上进行排序,分组和分页要快得多。

我可以在wpf数据网格中使用我拥有的或类似的东西吗?如何获得数据网格以呈现3种不同类型的行,如上所示?
还是不应该查看DataGrid并做其他事情来呈现数据?


决定只使用带有列和行定义的WPF网格来制作自己的" DataGrid"。 另一个选择似乎是WPF表,它的工作方式似乎类似于HTML表。

现在,我只需要实现自己的拖放操作即可更改列顺序并允许对列标题单击进行排序。 已经找到了拖放功能,因此正在取得进展。