属性在ObservableCollection <T>中更改时调用命令

时间:2019-11-14 00:50:55

标签: reactiveui

我有下面的 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

1 个答案:

答案 0 :(得分:-1)

您应该创建FieldObjectViewModel,然后将FieldObject转换为FieldObjectViewModel

FieldObjectViewModel将在SaveCommand更改时处理IsActive