是否可以强制控件引发 Validation.Error 事件,即使绑定未指定 NotifyOnValidationError ?
或者
当显示或隐藏红色验证边框时,是否还会出现另一个事件?
解释
我有一个附加行为,它在 Validation.GetHasError 和我的ViewModel的属性之间进行绑定。这样做的目的是在视图模型方面了解View边验证的时间。
示例:具有 int 属性
的视图模型class ViewModel
{
int Value { get; set; }
}
文本框:
<TextBox Text="{Binding Value}" Validation.Error="Validation_Handler" />
示例我想知道用户何时输入的值不是整数。
修改所有视图模型属性以使字符串类型并在ViewModel上完成所有验证是不可行的,因为某些ViewModel属性是在运行时动态生成的,我想保留默认的转换器行为
答案 0 :(得分:0)
见this问题
最简单的解决方案是继承 Binding 类,并在构造函数上将 NotifyOnValidationError 设置为true。这样就始终会触发 Validation.Error 事件。
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" />