ValueBinder( CommonEx.TryParseDelegate <TModel> tryViewToModel, Func <TModel, string> modelToView, Func <TModel, bool> valueRangeValidator, Func <TModel, TModel> coerceBeforeShow, Func <string, bool> validator) { TryViewToModel = tryViewToModel ?? throw new ArgumentNullException(nameof(tryViewToModel)); ModelToView = modelToView ?? throw new ArgumentNullException(nameof(modelToView)); ValueRangeValidator = valueRangeValidator ?? throw new ArgumentNullException(nameof(valueRangeValidator)); CoerceBeforeShow = coerceBeforeShow ?? throw new ArgumentNullException(nameof(coerceBeforeShow)); Validator = validator ?? throw new ArgumentNullException(nameof(validator)); }
public ValueBinder( CommonEx.TryParseDelegate <TModel> viewToModel, Func <TModel, string> modelToView, Func <TModel, bool> valueRangeValidator, Func <TModel, TModel> coerceBeforeShow) { TryViewToModel = viewToModel ?? throw new ArgumentNullException(nameof(viewToModel)); ModelToView = modelToView ?? throw new ArgumentNullException(nameof(modelToView)); ValueRangeValidator = valueRangeValidator ?? throw new ArgumentNullException(nameof(valueRangeValidator)); CoerceBeforeShow = coerceBeforeShow ?? throw new ArgumentNullException(nameof(coerceBeforeShow)); Validator = viewValue => { var isOk = viewToModel(viewValue, out TModel modelValue); if (isOk) { isOk &= ValueRangeValidator(modelValue); } return(isOk); }; }
public ValueBinder(CommonEx.TryParseDelegate <TModel> viewToModel, Func <TModel, string> modelToView, Func <TModel, bool> valueRangeValidator) : this(viewToModel, modelToView, valueRangeValidator, v => v) { }