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));
    }
Exemple #3
0
        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);
        }