public ErrorInfoHandler(FrameworkElement element, INotifyDataErrorInfo errorInfo, DependencyProperty dp) { _element = element; _bindingExpr = element.GetBindingExpression(dp); // ReSharper disable once PossibleNullReferenceException _propertyName = _bindingExpr.ResolvedSourcePropertyName; _errorInfo = errorInfo; _errorsContainer = errorInfo as IPropertyErrorsContainer; }
public static IDisposable SetupValidation <T, TProperty>(this object viewModel, IPropertyErrorsContainer errorsContainer, Expression <Func <T, TProperty> > expr, Func <T, TProperty, string> validateFunc) { var vm = viewModel ?? throw new ArgumentNullException(nameof(viewModel)); var name = expr.GetMember(); var type = typeof(IPropertyErrorsContainer <>).MakeGenericType(vm.GetType()); // ReSharper disable once PossibleNullReferenceException var setupValidationMethod = type.GetMethod("SetupValidation").MakeGenericMethod(typeof(TProperty)); var result = (IDisposable)setupValidationMethod.Invoke(errorsContainer, new object[] { name, validateFunc }); return(result); }
public static IDisposable SetupValidation <T, TProperty>(this IPropertyErrorsContainer <T> vm, Expression <Func <T, TProperty> > expr, Func <T, TProperty, string> validateFunc) { var name = expr.GetMember(); return(vm.SetupValidation(name, validateFunc)); }