Я использую SouceCache из DynamicData в своем проекте Xamarin Forms для отслеживания изменений из бэкэнда. Сначала я получаю список Предметов из бэкэнда, заполняю пользовательский интерфейс и затем жду изменений.
Проблема в том, что когда новый (обновленный) объект прибывает из бэкэнда, я нахожу и обновляю его в коллекции _innerCache, из наблюдаемого не выводится новое значение, и пользовательский интерфейс не обновляется.
Код упрощен, но выглядит примерно так:
_internalSourceCache = new SourceCache<Item, string>(o => o.Id);
public IObservable<IChangeSet<Item, string>> Connect() => _internalSourceCache.Connect();
private void OnItemUpdated(List<Item> items)
{
foreach (var item in items)
{
_internalSourceCache.Edit(innerCache =>
{
innerCache.AddOrUpdate(item);
});
}
}
И в модели представления, где мне нужны эти изменения :
itemsService
.Connect()
.Transform(item=>
{
return new ItemCellViewModel(item);
}, (_, n) => _ = new ItemCellViewModel(n))
.Sort(SortExpressionComparer<ItemCellViewModel>.Descending(t => t.Status))
.DisposeMany()
.ObserveOn(MainThreadScheduler)
.Bind(out _items)
.Subscribe();
Я явно что-то упустил, но я все еще не знаю, что, поэтому, пожалуйста, помогите, если вы видите проблему:)