使用动态数据将IObservable转换为SourceCache

问题描述

我是ReactiveUI的新手,正在尝试将其添加到Xamarin Forms应用程序中。我们有一个返回IObservable的服务方法

IObservable<List<DiningArea>> diningAreaObservable = _tableService.GetAllDiningAreas();

这有效,并且以前我们已经订阅了该方法,并将结果映射到ObservableCollection中。我想替换它,然后开始使用动态数据。因此,我使用XAML集合视图的绑定源为DiningAreas设置了一些全局变量

private SourceCache<DiningArea,int> _diningAreas = new SourceCache<DiningArea,int>(x => x.Id);
private ReadOnlyObservableCollection<DiningArea> _diningAreaCollection;

public ReadOnlyObservableCollection<DiningArea> DiningAreas => _diningAreaCollection; 

现在在我的viewmodel中,我调用该服务,获取一个可观察的对象,但是如何将可观察的对象添加到SourceCache中。我可以看到如何将其转换为IChangeSet,但我希望它与_diningAreas分开。

IObservable<List<DiningArea>> diningAreaObservable = _tableService.GetAllDiningAreas();

IObservable<IChangeSet<DiningArea,int>> diningAreaChangeSet = diningAreaObservable.ToObservableChangeSet(t => t.Id);

_diningAreas.AddOrUpdate(new DiningArea { Id = 0,Name = "All",Position = 0 });

var diningAreadisposable = _diningAreas.Connect()
  .sort(SortExpressionComparer<DiningArea>.Ascending(z => z.Position))
  .Bind(out _diningAreaCollection)
  .Subscribe();

我是否正确理解了这一点,还是在做倒退的事情?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...