Esempio n. 1
0
 protected virtual void OnNavigateRepeaterValueBindingModel(RepeatingValueBindingModel repeaterBindingModel)
 {
     foreach (var vbm in repeaterBindingModel.Bindings)
     {
         NavigateValue(vbm);
     }
 }
Esempio n. 2
0
            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);
            }
        }