Извинения, если терминология отключена;Я разработчик для iOS, использующий Xamarin.iOS для разработки приложения.Я использую ReactiveUI с DynamicData и архитектурой MVVM.Я довольно доволен RxSwift и концепциями FRP в целом.У меня есть Модель, которая публикует SourceList<MyThing>
, в соответствии с документами, например, так:
// Property declarations
private readonly SourceList<MyThing> Things;
public IObservableCollection<MyThing> ThingsBindable { get; }
// Later, in the constructor...
Things = new SourceList<MyThing>();
// Is this of the right type?
ThingsBindable = new ObservableCollectionExtended<MyThing>();
Things
.Connect()
.Bind(ThingsBindable)
.Subscribe();
Я могу успешно использовать .BindTo()
в моем View (т.е. ViewController в iOS-земле), чтобы получить UITableViewобновить при изменении модели:
Model
.WhenAnyValue(model => model.ThingsBindable)
.BindTo<MyThing, MyThingTableViewCell>(
tableView,
new NSString("ThingCellIdentifier"),
46, // Cell height
cell => cell.Initialize());
Я бы хотел вместо привязки непосредственно к модели, чтобы ViewModel подписывался и публиковал (или иным образом прокси) SourceList<MyThing>
илипривязываемая версия этого, так что представление использует только свойства ViewModel.SourceList
объявлен private
в документах;Я не уверен в лучшей практике здесь: я делаю это общедоступным и делаю мои Connect()
в ViewModel?Или есть способ передачи общедоступной IObservableCollection<MyThing> ThingsBindable
из ViewModel?Я также не уверен, что ObservableCollectionExtended<MyThing>
- правильный тип для свойства Bindable, но, похоже, он работает.
Я пробовал различные комбинации .ToProperty()
, .Bind()
, .Publish()
и т. Д. И делал версию Обвязки вида, наблюдаемой в ViewModel, безрезультатно, и сейчас просто выбрасываю автозаполнение встена, чтобы увидеть, что торчит.Любое направление приветствуется.ТИА.