Необходимо использовать WhenAnyValue(несколько фильтров) и AutoRefresh(x=>x .colproperty), привязать фильтр и т. д., преобразовать и выполнить завершающие действия.. (в этом примере разбиение на страницы вручную вместо виртуализации)
Код: Выделить всё
this.WhenAnyValue(x => x.Creations, x => x.PerPage, x => x.CurrentPage, x => x.IncludePublished, x => x.Search, x => x.ShowForReview)
.Select(x => x.Item1.ToObservableChangeSet().AutoRefresh(x => x.Listing).ToCollection().Select(x => x
.Where(x => wherefilters)
.Reverse()
.Skip(PerPage * (CurrentPage - 1))
.Take(PerPage)
.Select(x => new CreationViewModel(x)))
.Do(x =>
{
if (x.Count() == 1)
SelectedCreation = x.First();
})
.Do(x =>
FilteredCreations = x.ToObservableCollection()
).Subscribe()).Subscribe();
Должен ли я как-то сломать это? Я нашел ToObservableChangeSet() .Filter(this.WhenAnyValue....) где-то был, но кажется, что он не поддерживается (больше).
Я не могу найти пример того, как обрабатывать такие случаи.
Это вызывает новый способ CreationViewModel слишком много раз, так как я предполагаю, что это срабатывание умножается на ifanyvalues и autorefresh.
Пытался найти ресурсы для таких случаев, пытался разобраться.
РЕДАКТИРОВАТЬ
Хорошо, я разделил наблюдаемые, добавил AutoRefreshOnObservable, который пропустил раньше.
У меня есть две основные проблемы:
(1)
https://github.com/LTa2022/RUIDDMyExamp ... ensions.cs
Как правильно рассчитать максимальную страницу, мой подход с использованием toCollection работает, но подписка слишком много раз (пробовал take(1) немедленно отказаться от подписки, но это вообще не работает)
Я думаю, что это имеет смысл из этого .PageEx() расширение, обновляющее MaxPage объекта класса Paging.
(2)
https://github.com/LTa2022/RUIDDMyExamp ... ewModel.cs
Я реализовал фабрику viewmodelfactory, которая обеспечивает правильный результат, используя кеш моделей представлений, но я думаю, что моя наблюдаемая цепочка неверна и слишком много раз доходит до части преобразования. (строка 86) (или, может быть, так оно и работает)
Подробнее здесь: https://stackoverflow.com/questions/780 ... ng-a-colle