WPFDataGrid如何处理分组小计和目标行?我正在使用包含许多键值的项目实现WPFDataGrid。项目按项目类别分组。对于每个类别,应该有:一行显示每个键值列中该行的所有行的总和。绑定到数据源网格中不是目标行的目标行。目标行告诉每一列今年的目标是什么(例如,它将花费多少)。这些行应始终位于每个组的顶部(排序过滤)。我的第一个解决方案是将这些数据放在组标题中。这不是一个好的解决方案,因为组标题不支持列。即它应该通过获取列宽来构造。这可以做到,但是当用户想要重新排序和隐藏列时它会变得复杂。DataGrid使用CollectionViewSource,因此它没有填充C#代码。基本上我正在扩展这个例子:http://msdn.microsoft.com/en-us/library/ff407126.aspx谢谢和最诚挚的问候-matti在我的一个项目中,我有一个被黑在一起的DataGrid,它包含组小计行。我们不关心你提出的一些问题,比如隐藏和排序列,所以我不确定它是否具有可扩展性。我还意识到可能存在性能问题,这可能是大型集合的问题(我的窗口运行32个单独的DataGrids-哎哟)。但它与我见过的其他解决方案的方向不同,所以我想我会把它扔在这里看看它是否对你有帮助。我的解决方案包括两个主要部分:1.小计行不是主DataGrid中的行,而是单独的DataGrid。我实际上在每个组中有2个额外的网格:1个在标题中,仅在组折叠时显示,1个在ItemsPresenter下方。小计DataGrids的ItemsSource来自一个转换器,该转换器接收组中的项目并返回聚合视图模型。小计网格与主网格具有完全相同的列(填充在DataGrid_Loaded中,但我相信它也可以在xaml中完成)。2.下一个问题是如何使所有DataGrid的行为就像它们是单个网格一样。我通过在一个名为DataGridSharedSizeTextColumn的类中继承DataGridTextColumn(在本例中我们只有文本,但其他列类型应该也可以)来处理它,它模仿Grid类的SharedSizeGroup行为。它有一个带有组名称的字符串依赖属性,并跟踪同一组中的所有列。当一列中的Width.DesiredValue发生变化时,我更新所有其他列中的MinWidth并使用DataGridOwner.UpdateLayout()强制更新。此类还包括列重新排序,并在DisplayIndex更改时执行组范围内的更新。我认为此方法也适用于任何其他列属性,只要它具有设置器即可。选择、复制等还有其他令人讨厌的事情。但事实证明,使用MouseEntered和MouseLeave事件以及使用自定义复制命令可以轻松处理。一种选择可能是在数据源中添加具有特殊值的Name和其他没有意义的字段的行,并使用DataTrigger以特殊颜色显示它们,也可能是另一种颜色。无论如何,过滤是在C#中完成的,因此它不会影响行。排序是这里唯一的问题。只告诉某些行始终为0并且组中的顺序为1真的很酷。但是因为我不知道如何在C#中对所有列进行自定义排序而不是仅仅声明排序:编辑:与我的第一个解决方案(组标题中的总和信息)相比,它有一个主要缺点,因为当过滤器发生变化时,我应该更新仅为可见行计算的总和。所以这个答案是一个完整的hack,缺乏优雅,并且使用WPF假设没有好的功能:(以上是C#学习教程的全部内容:如何处理WPFDataGrid中的组小计和目标行?分享,如果它对你有用,需要了解更多C#学习教程,希望大家多多关注——本文整理自网络,不代表立场,如涉及侵权,请点击右转联系管理员删除,转载请注明出处:
