猿问

检测WPF验证错误

在WPF中,您可以使用ExceptionValidationRule或根据数据绑定期间在数据层中引发的错误来设置验证DataErrorValidationRule

假设您以这种方式设置了一堆控件,并且有一个“保存”按钮。用户单击“保存”按钮时,需要确保没有验证错误,然后再继续保存。如果存在验证错误,则要大声疾呼。

在WPF中,如何确定是否有任何数据绑定控件设置了验证错误?


慕的地10843
浏览 680回答 3
3回答

森林海

这是您会喜欢或讨厌的LINQ版本。private void CanExecute(object sender, CanExecuteRoutedEventArgs e){    e.CanExecute = IsValid(sender as DependencyObject);}private bool IsValid(DependencyObject obj){    // The dependency object is valid if it has no errors and all    // of its children (that are dependency objects) are error-free.    return !Validation.GetHasError(obj) &&    LogicalTreeHelper.GetChildren(obj)    .OfType<DependencyObject>()    .All(IsValid);}

慕娘9325324

使用ListBox时,发布的代码对我不起作用。我重写了它,现在它可以工作了:public static bool IsValid(DependencyObject parent){&nbsp; &nbsp; if (Validation.GetHasError(parent))&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; // Validate all the bindings on the children&nbsp; &nbsp; for (int i = 0; i != VisualTreeHelper.GetChildrenCount(parent); ++i)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; DependencyObject child = VisualTreeHelper.GetChild(parent, i);&nbsp; &nbsp; &nbsp; &nbsp; if (!IsValid(child)) { return false; }&nbsp; &nbsp; }&nbsp; &nbsp; return true;}
随时随地看视频慕课网APP
我要回答