我有下面的 working 代码,但是我不确定我是否确实正确地完成了此操作,或者我是否正在混混ReactiveUI。
ctor()
{
var saveFieldCommand = ReactiveCommand.CreateFromTask<FieldObject>(ExecuteSaveField);
Fields.ToObservableChangeSet()
.ToCollection()
.Subscribe(x => x.ForEach(
f => f.WhenAny(y => y.IsActive, change => change.Sender)
.Skip(1)
.ObserveOn(RxApp.MainThreadScheduler)
.InvokeCommand(saveFieldCommand)));
}
private async Task ExecuteSaveField(FieldObject field)
=> await _fieldDataService.Save(field).ConfigureAwait(false);
每当IsActive
内的某个属性上的ObservableCollection<T>
属性发生变化时,是否存在更正确的调用save命令的方法?我担心订阅上的潜在内存泄漏,也担心其中的.ForEach
。
答案 0 :(得分:-1)
您应该创建FieldObjectViewModel
,然后将FieldObject
转换为FieldObjectViewModel
。
FieldObjectViewModel
将在SaveCommand
更改时处理IsActive
。