提高验证.没有NotifyOnValidationError的错误.是最低的

本文关键字:错误 NotifyOnValidationError 没有 高验证 验证 | 更新日期: 2023-09-27 18:14:03

可以强制控件引发验证。错误事件,即使绑定没有指定NotifyOnValidationError?

是否有另一个事件总是在显示或隐藏红色验证边框时引发?

解释:

我有一个附加的行为,使验证之间的绑定。GetHasError和我的ViewModel的属性。这样做的目的是在视图模型端知道视图端验证何时发生。

示例:一个带有int属性的视图模型
class ViewModel
{
    int Value { get; set; }
}

文本框:

 <TextBox Text="{Binding Value}" Validation.Error="Validation_Handler" />

示例我想知道当用户输入的值不是整数

将所有视图模型属性修改为具有字符串类型并在ViewModel上完成所有验证是不可行的,因为一些ViewModel属性是在运行时动态生成的,并且我想保留默认的转换器行为

提高验证.没有NotifyOnValidationError的错误.是最低的

从这个问题

最简单的解决方案是继承Binding类,并在构造函数中将NotifyOnValidationError设置为true。这样验证。错误事件总是被触发。
public class Binding : System.Data.Binding
{
    public Binding(string path) : base(path)
    {
        NotifyOnValidationError = true;
    }
}

和XAML:

<TextBox Text="{ui:Binding Value}" Validation.Error="Validation_Handler" />

代替:

<TextBox Text="{Binding Value, NotifyOnValidationError='True'}" Validation.Error="Validation_Handler" />