【发布时间】:2020-03-16 16:53:40
【问题描述】:
我在我的 Xamarin Forms 项目中使用来自 DynamicData 的 SouceCache 来跟踪来自后端的更改。首先,我从后端获取项目列表,填充 UI,然后等待更改。
问题是当新的(更新的)对象从后端到达时,我在 _innerCache 集合中找到并更新它,没有从 observable 发出新值,并且 UI 没有更新。
代码被简化了,但它是这样的:
_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();
我显然遗漏了一些东西,但我仍然不知道是什么,所以如果您发现问题,请帮忙:)
【问题讨论】:
标签: mvvm xamarin.forms dynamic-data reactiveui