public ItemEditViewModel(EvaluationItem model) { Id = model.Id; _Name = model.Name; StatisticalWay = model.StatisticalWay; FormulaParams = model.FormulaParams.ConvertTo<IFormulaParams>(); Description = model.Description.ConvertTo<IEvaluationItemDescription>(); var obsvr = Observer.Create<FormulaInfo>(o => { if (_updateValues == null) return; _updateValues.Formula = o; }); Observable.FromEventPattern<PropertyChangedEventArgs>(Description, "PropertyChanged") .Select(args => args.Sender) .OfType<IEvaluationItemDescription>() .Subscribe(o => { if (_updateValues == null) return; _updateValues.Description = o; }); SetFormulaOptions = model.FormulaOptions.Select(o => { var vm = o.ConvertTo<IFormulaParams>(); if (vm != null) Observable.FromEventPattern<PropertyChangedEventArgs>(vm, "PropertyChanged") .Select(args => args.Sender) .OfType<IFormulaParams>().Select(p => new FormulaInfo().PopulateWith(p)) .Subscribe(obsvr); return vm ?? new UnknownFormulaParams(); }).ToList(); _SelectedFormula = SetFormulaOptions.FirstOrDefault(o => FormulaParams != null && FormulaParams.GetType() == o.GetType()); this.WhenAny(x => x.SelectedFormula, x => x.Value) .Select(o => o == null ? null : new FormulaInfo().PopulateWith(o)) .Subscribe(obsvr); this.WhenAny(x => x.Name, x => x.Value) .Subscribe(o => { if (_updateValues == null) return; _updateValues.Name = o; }); IsEditing = true; _updateValues = new UpateRequestBody(); }
public ItemEditViewModel(EvaluationItem model) { Id = model.Id; _Name = model.Name; StatisticalWay = model.StatisticalWay; FormulaParams = model.FormulaParams.ConvertTo <IFormulaParams>(); Description = model.Description.ConvertTo <IEvaluationItemDescription>(); var obsvr = Observer.Create <FormulaInfo>(o => { if (_updateValues == null) { return; } _updateValues.Formula = o; }); Observable.FromEventPattern <PropertyChangedEventArgs>(Description, "PropertyChanged") .Select(args => args.Sender) .OfType <IEvaluationItemDescription>() .Subscribe(o => { if (_updateValues == null) { return; } _updateValues.Description = o; }); SetFormulaOptions = model.FormulaOptions.Select(o => { var vm = o.ConvertTo <IFormulaParams>(); if (vm != null) { Observable.FromEventPattern <PropertyChangedEventArgs>(vm, "PropertyChanged") .Select(args => args.Sender) .OfType <IFormulaParams>().Select(p => new FormulaInfo().PopulateWith(p)) .Subscribe(obsvr); } return(vm ?? new UnknownFormulaParams()); }).ToList(); _SelectedFormula = SetFormulaOptions.FirstOrDefault(o => FormulaParams != null && FormulaParams.GetType() == o.GetType()); this.WhenAny(x => x.SelectedFormula, x => x.Value) .Select(o => o == null ? null : new FormulaInfo().PopulateWith(o)) .Subscribe(obsvr); this.WhenAny(x => x.Name, x => x.Value) .Subscribe(o => { if (_updateValues == null) { return; } _updateValues.Name = o; }); IsEditing = true; _updateValues = new UpateRequestBody(); }