protected virtual void OnNavigateRepeaterValueBindingModel(RepeatingValueBindingModel repeaterBindingModel) { foreach (var vbm in repeaterBindingModel.Bindings) { NavigateValue(vbm); } }
protected override void OnNavigateRepeaterValueBindingModel(RepeatingValueBindingModel repeaterBindingModel) { var arg = FindArgument(repeaterBindingModel.Argument.Name); if (arg != null) { foreach (var value in arg.Values) { var binding = repeaterBindingModel.Add(); // TODO: value? NavigateValue(binding); } } }
private ValueBindingModel CreateValueBindingModel(Binding binding) { var arg = FindArgument(binding.Argument.Name); if (arg == null) { // schema error throw new ArgumentNotFoundException(binding.Name, binding.Argument.Name); } var argEntity = CreateArgumentEntity(arg); if (binding.Control.ControlType == ControlTypes.Options) { var ovbm = new OptionsValueBindingModel(); Fill(ovbm, binding, arg, argEntity); var valueEntities = new List <ValueEntity>(); Fill(valueEntities, binding.Values); ovbm.Values = valueEntities; return(ovbm); } else { bool repeater = (arg.Multiplicity == Multiplicity.OneOrMore || arg.Multiplicity == Multiplicity.ZeroOrMore); bool multiValue = (argEntity.ValueCount > 1); ValueBindingModel template; if (multiValue) { template = CreateMultiValueBindingModel(binding, arg, argEntity); } else { template = CreateSingleValueBindingModel(binding, arg, argEntity, 0); } if (repeater) { var rvbm = new RepeatingValueBindingModel(); rvbm.TemplateBindingModel = template; template.Parent = rvbm; Fill(rvbm, binding, arg, argEntity); if (!template.IsOptional) { Debug.Assert(arg.Multiplicity == Multiplicity.OneOrMore); // must at least have one value rvbm.Add(); // others are optional template.IsOptional = true; } return(rvbm); } return(template); } }