在我正在开发的 WPF 应用程序中,我想以编程方式确定 xamDataGrid 是否配置了任何过滤器。
我已经为 Excel 配置了导出功能,并想快速检查以确定过滤器是否处于活动状态,如果过滤器处于活动状态,那么我将向用户展示是否导出过滤行的选项。 .
我找不到任何合适的班级成员。
有任何想法吗?
在我正在开发的 WPF 应用程序中,我想以编程方式确定 xamDataGrid 是否配置了任何过滤器。
我已经为 Excel 配置了导出功能,并想快速检查以确定过滤器是否处于活动状态,如果过滤器处于活动状态,那么我将向用户展示是否导出过滤行的选项。 .
我找不到任何合适的班级成员。
有任何想法吗?
找到答案男生和女生...
var activeFilterCount = xamDataGrid1.FieldLayouts[0].RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count);
AXamDataGrid
可以有多个字段布局(分层结构)。在这种情况下,您需要考虑所有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
存储 perFieldLayout
in是有原因的XamDataGrid
。在早期版本中,它们存储
RecordManger
在grid
. 所以这是迭代 all 的完整解决方案FieldLayouts
。
像下面的网格:Multiple Layout and Filters can be applied on every Layout/Level