示例来自How to disable a Button on TextBox ValidationErrors in WPF
效果如图
继承ValidationRule实现验证类
public class OverThirteenValidationRule : ValidationRule { public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { if (value != null) { int age = 0; try { age = Convert.ToInt32(value); } catch { return new ValidationResult(false, "You must be older than 13!"); } if (age > 13) return ValidationResult.ValidResult; } return new ValidationResult(false, "You must be older than 13!"); } }
通过MultiDataTrigger绑定提交按钮的IsEnabled属性
通过Path
获得每个输入框的Validation.HasError
值,当所有TextBox的HasError=false时,设置提交按钮可用
显示提示信息同样通过Validation.Errors的值判断是否显示提示信息,这里用了一个Converter(ToVisibility),判断错误信息个数是否为0,为0则不显示,不为0则显示显示内容为(Validation.Errors)[0].ErrorContent,即第一个错误内容,即如果有多个验证、有多个报错内容也只显示第一个>示例代码ValidationRule 类参考资料How to: Implement Binding ValidationHow to disable a Button on TextBox ValidationErrors in WPFAccessing WPF control validation rules from code" _ue_custom_node_="true">