У меня действительно большой ObservableCollection<MyItem>
, и мне нужно обеспечить удобную фильтрацию на нем.async CollectionViewSource-фильтрация?
public static async Task RefilterViewAsync(this ItemsControl @this, Predicate<object> compareLogic)
{
await Task.Run(
() =>
{
var collectionView = CollectionViewSource.GetDefaultView(@this.ItemsSource);
if (collectionView.CanFilter)
{
collectionView.Filter = compareLogic;
}
else throw new InvalidOperationException("Filtering not supported...");
collectionView.Refresh();
});
}
.. проблема в том, что приведенный выше код не работает по ряду причин. Фитирование на UI-нитке занимает около 1 минуты. Любые идеи о том, как реализовать асинхронную фильтрацию, по крайней мере, чтобы отобразить некоторую анимацию «обработка ..», чтобы помочь пользователю преодолеть это?