Exemple #1
0
        public static IDisposable BindValidation <TView, TViewModel, TViewProperty>(
            this TView view,
            TViewModel viewModel,
            Expression <Func <TViewModel?, ValidationHelper> > viewModelHelperProperty,
            Expression <Func <TView, TViewProperty> > viewProperty)
            where TView : IViewFor <TViewModel>
            where TViewModel : ReactiveObject, IValidatableViewModel
        {
            if (viewModel is null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            if (viewModelHelperProperty is null)
            {
                throw new ArgumentNullException(nameof(viewModelHelperProperty));
            }

            if (viewProperty is null)
            {
                throw new ArgumentNullException(nameof(viewProperty));
            }

            return(ValidationBinding.ForValidationHelperProperty(view, viewModelHelperProperty, viewProperty));
        }
Exemple #2
0
    public static IDisposable BindValidationEx <TView, TViewModel, TViewModelProperty>(
        this TView view,
        TViewModel?viewModel,
        Expression <Func <TViewModel, TViewModelProperty?> > viewModelProperty,
        TextInputLayout viewProperty,
        IValidationTextFormatter <string>?formatter = null)
        where TView : IViewFor <TViewModel>
        where TViewModel : class, IReactiveObject, IValidatableViewModel
    {
        if (view is null)
        {
            throw new ArgumentNullException(nameof(view));
        }

        if (viewModelProperty is null)
        {
            throw new ArgumentNullException(nameof(viewModelProperty));
        }

        if (viewProperty is null)
        {
            throw new ArgumentNullException(nameof(viewProperty));
        }

        formatter ??= Locator.Current.GetService <IValidationTextFormatter <string> >() ??
        SingleLineFormatter.Default;

        return(ValidationBinding.ForProperty(
                   view,
                   viewModelProperty,
                   (_, errors) => viewProperty.Error = errors.FirstOrDefault(msg => !string.IsNullOrEmpty(msg)),
                   formatter));
    }
        public static IDisposable BindValidation <TView, TViewModel, TViewModelProperty, TViewProperty>(
            this TView view,
            TViewModel viewModel,
            Expression <Func <TViewModel, TViewModelProperty> > viewModelProperty,
            Expression <Func <TView, TViewProperty> > viewProperty,
            IValidationTextFormatter <string>?formatter = null)
            where TView : IViewFor <TViewModel>
            where TViewModel : class, IReactiveObject, IValidatableViewModel
        {
            if (viewModel is null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            if (viewModelProperty is null)
            {
                throw new ArgumentNullException(nameof(viewModelProperty));
            }

            if (viewProperty is null)
            {
                throw new ArgumentNullException(nameof(viewProperty));
            }

            return(ValidationBinding.ForProperty(view, viewModelProperty, viewProperty, formatter));
        }
        public void ShouldSupportValidationHelperActionBindingRequiredForPlatformSpecificImplementations()
        {
            const string nameErrorMessage = "Name should not be empty.";
            var          view             = new TestView(new TestViewModel {
                Name = string.Empty
            });

            view.ViewModel.NameRule = view
                                      .ViewModel
                                      .ValidationRule(
                vm => vm.Name,
                s => !string.IsNullOrEmpty(s),
                nameErrorMessage);

            ValidationBinding.ForValidationHelperProperty <TestView, TestViewModel, string>(
                view,
                viewModel => viewModel.NameRule,
                (_, errorText) => view.NameErrorLabel = errorText,
                SingleLineFormatter.Default);

            Assert.False(view.ViewModel.ValidationContext.IsValid);
            Assert.Equal(1, view.ViewModel.ValidationContext.Validations.Count);
            Assert.NotEmpty(view.NameErrorLabel);
            Assert.Equal(nameErrorMessage, view.NameErrorLabel);
        }
Exemple #5
0
 /// <summary>
 /// Platform binding to the <see cref="TextInputLayout"/>
 /// </summary>
 /// <typeparam name="TView"></typeparam>
 /// <typeparam name="TViewModel"></typeparam>
 /// <param name="view"></param>
 /// <param name="viewModel"></param>
 /// <param name="viewModelHelperProperty"></param>
 /// <param name="viewProperty"></param>
 /// <returns></returns>
 public static IDisposable BindValidation <TView, TViewModel>(this TView view,
                                                              TViewModel viewModel, Expression <Func <TViewModel, ValidationHelper> > viewModelHelperProperty,
                                                              TextInputLayout viewProperty)
     where TViewModel : ReactiveObject, ISupportsValidation
     where TView : IViewFor <TViewModel>
 {
     return(ValidationBinding.ForValidationHelperProperty(view, viewModelHelperProperty, (ValidationState v, string f) => viewProperty.Error = f, SingleLineFormatter.Default));
 }
 public static IDisposable BindValidation <TView, TViewModel, TViewProperty>(
     this TView view,
     TViewModel viewModel,
     Expression <Func <TView, TViewProperty> > viewProperty)
     where TViewModel : ReactiveObject, IValidatableViewModel
     where TView : IViewFor <TViewModel>
 {
     return(ValidationBinding.ForViewModel <TView, TViewModel, TViewProperty>(view, viewProperty));
 }
 public static IDisposable BindValidation <TView, TViewModel, TViewModelProperty, TViewProperty>(
     this TView view,
     TViewModel viewModel,
     Expression <Func <TViewModel, TViewModelProperty> > viewModelProperty,
     Expression <Func <TView, TViewProperty> > viewProperty)
     where TView : IViewFor <TViewModel>
     where TViewModel : ReactiveObject, ISupportsValidation
 {
     return(ValidationBinding.ForProperty(view, viewModelProperty, viewProperty));
 }
 public static IDisposable BindValidation<TView, TViewModel>(
     this TView view,
     TViewModel viewModel,
     Expression<Func<TViewModel, ValidationHelper>> viewModelHelperProperty,
     TextInputLayout viewProperty)
     where TView : IViewFor<TViewModel>
     where TViewModel : ReactiveObject, IValidatableViewModel
 {
     return ValidationBinding.ForValidationHelperProperty(
         view,
         viewModelHelperProperty,
         (_, errorText) => viewProperty.Error = errorText,
         SingleLineFormatter.Default);
 }
Exemple #9
0
 public static IDisposable BindValidationEx <TView, TViewModel, TViewModelProperty>(
     this TView view,
     TViewModel viewModel,
     Expression <Func <TViewModel, TViewModelProperty> > viewModelProperty,
     TextInputLayout viewProperty)
     where TView : IViewFor <TViewModel>
     where TViewModel : ReactiveObject, IValidatableViewModel
 {
     return(ValidationBinding.ForProperty(
                view,
                viewModelProperty,
                (_, errors) => viewProperty.Error = errors.FirstOrDefault(msg => !string.IsNullOrEmpty(msg)),
                SingleLineFormatter.Default));
 }
        public static IDisposable BindValidation <TView, TViewModel>(
            this TView view,
            TViewModel viewModel,
            Expression <Func <TViewModel?, ValidationHelper> > viewModelHelperProperty,
            TextInputLayout viewProperty,
            IValidationTextFormatter <string>?formatter = null)
            where TView : IViewFor <TViewModel>
            where TViewModel : class, IReactiveObject, IValidatableViewModel
        {
            formatter ??= Locator.Current.GetService <IValidationTextFormatter <string> >() ??
            SingleLineFormatter.Default;

            return(ValidationBinding.ForValidationHelperProperty(
                       view,
                       viewModelHelperProperty,
                       (_, errorText) => viewProperty.Error = errorText,
                       formatter));
        }