如何确定Validation.ErrorEvent中是否再没有错误?

辛纳特

我非常简单地检查窗口中是否存在验证错误(假设所有绑定都将NotifyOnValidationError设置什么):

public MainWindow()
{
    InitializeComponent();
    DataContext = new VM();
    AddHandler(Validation.ErrorEvent, new RoutedEventHandler((s, e) =>
    {
        var args = (ValidationErrorEventArgs)e;
        var binding = (BindingExpression)args.Error.BindingInError;
        Title = binding.HasError ? $"Error {args.Error.ErrorContent}" : "";
    }), true);
}

当错误出现/消失时,将引发该事件,但是由于某些原因,当不再有错误并且包含旧的错误文本时,HasError仍然会发生该事件trueErrorContent

我究竟做错了什么?


以下是一个简单的MCVE,验证Test应为0

绑定错误(输入0a或空字符串)已正确设置/重置。验证错误已正确设置(输入时1),但未重置(输入时0)。为什么?

实施INotifyPropertyChange没有区别。

xaml:

<TextBox Text="{Binding Test, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged}" />

查看模型:

public class VM : INotifyDataErrorInfo
{
    public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;

    int _test;
    public int Test
    {
        get => _test;
        set
        {
            _test = value;
            _error = value == 0 ? null : "Must be 0";
            ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(Test)));
        }
    }

    string _error;
    public bool HasErrors => _error != null;

    public IEnumerable GetErrors(string propertyName)
    {
        if (_error != null)
            yield return _error;
    }

}
菲尔多

如果Title从处理程序中设置from,我认为您需要考虑ValidationErrorEventArgs.Action属性:

获取一个值,该值指示错误是新错误还是已被清除的现有错误。

我不确定100%,但是我怀疑,当您检查该HasError物业时,尚未清除物业。MSDN怀疑(基于“还应注意,在任一方向(目标到源或源到目标)上的有效值传输都会清除Validation.Errorsattached属性。”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查模型在Django中没有错误

如何检查python中是否有错误

如何判断真值表中是否有错误?

如何检测ghostscript中是否有错误

如何确定我的 AWS Lambda 函数退出且没有错误的原因?

如何检查Java源文件是否有效(没有错误)?

如何使此代码工作以存储在Laravel中。没有错误也没有存储

如何检查变量是否有错误

如何使用getOpt确定C中是否没有选项?

如何知道是否在伪造者中提交表单时没有错误

如何查看 SQL 查询是否正确执行且没有错误?

如何在 selenium 中验证 UI 错误而没有错误消息

org.springframework.validation.BeanPropertyBindingResult-没有错误

Python哲学的含义是什么:“现在再没有比现在“好”了。

WPF的第一个StackPanel目录可见,再没有

如何在脚本中创建新行而没有错误

如何在R中显示没有错误的堆栈跟踪?

如何在Symfony 4中创建登录页面而没有错误“ InvalidConfigurationException”?

在scala中,未声明的值没有错误。如何运作?

如何在没有错误和警告的情况下在 Typescript 中包装 async/await

没有错误显示时如何解决Java中未执行的主要方法?

如何在 Angular 中没有错误值的情况下更改标签的输入?

如何在React Native中显示来自API的数据而没有错误undefined属性?

如果没有错误,如何在 RxJS 链中运行一些代码

如何在没有错误的情况下单击 Javascript 中的大量元素?

如何检查表格中的树枝是否有错误?

在ASP.NET MVC中,如何检查属性是否有错误?

Fluent Validation .NET是否可以确定错误消息序列

可达代码编译没有错误 - 如何?