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)); }
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); }
/// <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); }
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)); }