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 { if (view is null) { throw new ArgumentNullException(nameof(view)); } if (viewModelHelperProperty is null) { throw new ArgumentNullException(nameof(viewModelHelperProperty)); } if (viewProperty is null) { throw new ArgumentNullException(nameof(viewProperty)); } formatter ??= Locator.Current.GetService <IValidationTextFormatter <string> >() ?? SingleLineFormatter.Default; return(ValidationBinding.ForValidationHelperProperty( view, viewModelHelperProperty, (_, errorText) => viewProperty.Error = errorText, formatter)); }
public static IDisposable BindValidation <TView, TViewModel, TViewProperty>( this TView view, TViewModel viewModel, Expression <Func <TViewModel?, ValidationHelper> > viewModelHelperProperty, 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 (viewModelHelperProperty is null) { throw new ArgumentNullException(nameof(viewModelHelperProperty)); } if (viewProperty is null) { throw new ArgumentNullException(nameof(viewProperty)); } return(ValidationBinding.ForValidationHelperProperty(view, viewModelHelperProperty, 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); }
/// <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 <TViewModel, ValidationHelper> > viewModelHelperProperty, Expression <Func <TView, TViewProperty> > viewProperty) where TView : IViewFor <TViewModel> where TViewModel : ReactiveObject, IValidatableViewModel { return(ValidationBinding.ForValidationHelperProperty(view, viewModelHelperProperty, 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); }