Как использовать Infragistics RecordFilter без пользовательского интерфейса
Наши пользователи используют Infragistics WPF XamDataGrid для фильтрации записей. Мы сериализуем и храним настройки фильтра, как показано в разделе "Сохранить Recordfilters", чтобы использовать их позже. Теперь мы хотим использовать фильтр без отображения XamDataGrid в пользовательском интерфейсе. Причина в том, что мы хотим отобразить маленькую иконку с количеством отфильтрованных элементов, и пользователь должен проверять огромную сетку, только если число подозрительно.
Таким образом, нам нужно оценить RecordFilters с нашим DataSource для подсчета результирующих элементов. Либо без XamDataGrid, либо, по крайней мере, со скрытым XamDataGrid в коде позади.
Итак, что мы можем сделать, это проверить, попадает ли RecordFilter в DataRecord, но как нам получить DataRecord?
_recordFilter.MeetsCriteria(_dataRecord)
Если я создаю целый XamDataGrid со всеми FieldLayouts и Fields в коде и даже связываю DataSource должным образом, он не распространяет Элементы DataSource в записи сетки. Я просто не могу оценить это и работать в коде позади.
_grid.DataContext.Count => 3
но
_grid.Records.Count => 0
а также
_grid.FieldLayouts[0].DataPresenter.Records => 0
Так что делать? Я вижу два возможных решения этой проблемы:
а) заставить XamDataGrid в коде сделать свое волшебство и предоставить необходимые DataRecords для проверки всех фильтров с помощью
_recordFilter.MeetsCriteria(_dataRecord)
б) найти код, который использует RecordFilters непосредственно на наших объектах данных. Это, конечно, возможно, но сложно, поскольку RecordFilters использует имена полей, а не имена свойств объектов...
Есть идеи?