在我正在开发的WPF应用程序中,我想以编程方式确定xamDataGrid是否配置了任何过滤器。
我已经为Excel配置了导出功能,并希望快速检查以确定过滤器是否处于活动状态,如果过滤器处于活动状态,那么我将向用户显示导出已过滤行的选项或不...
我找不到合适的班级成员。
有什么想法吗?
答案 0 :(得分:3)
找到了女孩的答案...
var activeFilterCount = xamDataGrid1.FieldLayouts[0].RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count);
答案 1 :(得分:1)
XamDataGrid
可以包含多个字段布局(层次结构) 。在这种情况下,您需要考虑所有FieldLayouts
而不仅仅是第一个。所以完整解决方案是:
public bool AreFiltersActive()
{
int activeFilterCount = 0;
foreach (FieldLayout f in xamDataGrid.FieldLayouts)
{
activeFilterCount+= f.RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count);
//retrieve filter count per layout
}
return activeFilterCount > 0;
//If any fieldlayout has any filter active then the sum will be more than 0
}
Filters
中每个FieldLayout
存储XamDataGrid
的原因。在早期版本中,它们存储在
RecordManger
中 反对grid
。所以这是迭代的完整解决方案 所有FieldLayouts
。
类似网格下方:Multiple Layout and Filters can be applied on every Layout/Level