Имеет простой код в старой версии ReactiveUI:
var allItems = new ObservableCollection<Model>(items);
var filteredItems = allItems.CreateDerivedCollection(
x => x,
Filter,
Comparer.Compare);
, где Filter
и Compare
имеет простые подписи:
private bool Filter(Model item)
public int Compare(Model x, Model y)
иногда я меняю элементы в других потоках (большие изменения, без INPC) или измените стратегии Filter \ Compare и просто сделайте filteredItems.Reset();
В DynamicData я пытаюсь:
ReadOnlyObservableCollection<Model> filteredItems;
var allItems = new ObservableCollection<Model>(items);
var cancellation = allItems
.ToObservableChangeSet()
.Filter(Filter)
.Sort(Comparer)
.ObserveOn(SynchronizationContext.Current)
.Bind(out filteredItems)
.DisposeMany()
.Subscribe();
но не найдено, как Reset
это ^ или filteredItems
.