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, TViewProperty>( this TView view, TViewModel?viewModel, Expression <Func <TView, TViewProperty> > viewProperty, IValidationTextFormatter <string>?formatter = null) where TView : IViewFor <TViewModel> where TViewModel : class, IReactiveObject, IValidatableViewModel { if (viewProperty is null) { throw new ArgumentNullException(nameof(viewProperty)); } return(ValidationBinding.ForViewModel <TView, TViewModel, TViewProperty>(view, viewProperty, formatter)); }
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> { if (viewModel is null) { throw new ArgumentNullException(nameof(viewModel)); } if (viewProperty is null) { throw new ArgumentNullException(nameof(viewProperty)); } return(ValidationBinding.ForViewModel <TView, TViewModel, TViewProperty>(view, viewProperty)); }
public void ShouldSupportViewModelActionBindingRequiredForPlatformSpecificImplementations() { const string nameErrorMessage = "Name should not be empty."; var view = new TestView(new TestViewModel { Name = string.Empty }); view.ViewModel.ValidationRule( vm => vm.Name, s => !string.IsNullOrEmpty(s), nameErrorMessage); ValidationBinding.ForViewModel <TestView, TestViewModel, string>( view, 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); }