예제 #1
0
        public DropdownsDemoForm()
        {
            _view = new DropdownsDemoFormView();

            _view.MultiChoice.PermittedValues = KnownSomeDtos;
            var choosenMultipleCount = LocalValueFieldBuilder.BuildInt(_view.MultiChoiceState);
            var choosenMultiple      = LocalValueFieldBuilder.Build(_view.MultiChoice);

            choosenMultiple.Changed += async(_, __, newValue, ___, ____) => {
                await choosenMultipleCount.DoChange(newValue.Count(), false);
            };

            _view.SingleChoice.PermittedValues = KnownSomeDtos;
            var choosenSingleSomeText = LocalValueFieldBuilder.Build(_view.SingleChoiceState);
            var choosenSingle         = LocalValueFieldBuilder.Build(_view.SingleChoice);

            choosenSingle.Changed += async(_, __, newValue, ___, ____) => {
                await choosenSingleSomeText.DoChange(newValue?.SomeText ?? "(not choosen)", false);
            };
        }
예제 #2
0
        public IntroduceItemForm()
        {
            _view = new IntroduceItemFormView();

            _someText   = LocalValueFieldBuilder.Build(_view.SomeText, Validator.IsNotEmptyOrWhitespaceOnly);
            _someNumber = LocalValueFieldBuilder.BuildInt(_view.SomeNumber, Validator.MustBePositive);
            _someBool   = LocalValueFieldBuilder.Build(_view.SomeBool);

            _view.SomeTrait.PermittedValues = EnumExtensions.GetEnumValues <SomeTraitType>().Select(x => (SomeTraitType?)x);
            _someTrait = LocalValueFieldBuilder.Build(_view.SomeTrait, Validator.IsNotNull);

            var isFormValid = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => {
                x.Observes(_someText);
                x.Observes(_someNumber);
                x.Observes(_someBool);
                x.Observes(_someTrait);
            });

            LocalActionBuilder
            .Build(_view.Create, () => Ended?.Invoke(this, Outcome.Saved))
            .With(x => x.BindEnableAndInitialize(isFormValid));
        }