为了账号安全,请及时绑定邮箱和手机立即绑定

检测WPF验证错误

检测WPF验证错误

在WPF中,您可以使用ExceptionValidationRule或根据数据绑定期间在数据层中引发的错误来设置验证DataErrorValidationRule。假设您以这种方式设置了一堆控件,并且有一个“保存”按钮。用户单击“保存”按钮时,需要确保没有验证错误,然后再继续保存。如果存在验证错误,则要大声疾呼。在WPF中,如何确定是否有任何数据绑定控件设置了验证错误?
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

这是您会喜欢或讨厌的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);

}


查看完整回答
反对 回复 2019-10-15
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

使用ListBox时,发布的代码对我不起作用。我重写了它,现在它可以工作了:


public static bool IsValid(DependencyObject parent)

{

    if (Validation.GetHasError(parent))

        return false;


    // Validate all the bindings on the children

    for (int i = 0; i != VisualTreeHelper.GetChildrenCount(parent); ++i)

    {

        DependencyObject child = VisualTreeHelper.GetChild(parent, i);

        if (!IsValid(child)) { return false; }

    }


    return true;

}


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 679 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信