我有一个WPF GridView
,部分数据需要显示在Totals中(包括Footer和Group totals),而不是实际的数据记录。
我认为编写一个触发器并根据行的数据隐藏该行会很容易,但事实证明 Telerik 的 GridView
使用了一个不寻常的虚拟化面板,所以尽管指定的行得到隐藏,在它应该去的地方留下一个空白的空白区域。
这是我目前的风格。它确实隐藏了行,但它相当于使可见性 Hidden
而不是 Collapsed
(隐藏项目,但在原处留下空白)
<Style TargetType="{x:Type telerik:GridViewGroupRow}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding Group.Key, RelativeSource={RelativeSource Self}}" Value="SomeValue">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
我已经尝试将 ItemTemplate 设置为 null,从 Telerik 的 GridViewVirtualizingPanel 中删除项目,并调整可见性,但这些选项似乎都不起作用。
有谁知道我可以用什么方法来做到这一点?我要么想隐藏(并折叠)基于触发器的行,要么想办法获取当前分组表达式的查询,这样我就可以查询第二个集合并在组总计中显示结果。我对使用代码隐藏或一些骇人听闻的东西来完成这个没有问题。
编辑
作为一个有趣的旁注,我可以将高度设置为 1,但不能设置为 0。即使 1 也太多了,因为我可以隐藏数千条记录,这会在屏幕上留下一个巨大的白色区域。
最佳答案
我发布了 a question on Telerik's forums同样,显然这是不可能的。我的选择是过滤结果集,或将行的高度设置为 1。
如果我过滤结果集,我的聚合是不正确的。如果我将行高设置为 1,如果隐藏了很多记录(确实存在),我仍然会得到大面积的空白区域。
我的最终解决方案是将分组行的行高设置为 1,并且只显示未分组的项目。这意味着如果数据未分组,所有项目都会显示,但是当分组时,有一条 1px 的白线几乎不会穿过隐藏项目所在的网格。
关于wpf - 如何隐藏 Telerik 的 GridView 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082143/