Wpf ValidatesOnExceptions如何工作
基于这个例子 ValidatesOnExceptions似乎负责捕获自定义异常并将其添加到Validation.Errors集合 问题是即使ValidatesOnExceptions设置为false,我也有相同的行为 有人能解释一下我遗漏了什么吗Wpf ValidatesOnExceptions如何工作,wpf,validation,Wpf,Validation,基于这个例子 ValidatesOnExceptions似乎负责捕获自定义异常并将其添加到Validation.Errors集合 问题是即使ValidatesOnExceptions设置为false,我也有相同的行为 有人能解释一下我遗漏了什么吗 谢谢验证异常用于自定义异常显示。但是,如果将TextBox绑定到int属性,则在绑定发生之前会发生转换,这可能会导致“红色边框” 试一试 <TextBox Text="{Binding IntField}"/> <TextBox T
谢谢
验证异常
用于自定义异常显示。但是,如果将TextBox
绑定到int
属性,则在绑定发生之前会发生转换,这可能会导致“红色边框”
试一试
<TextBox Text="{Binding IntField}"/>
<TextBox Text="{Binding StringField, ValidatesOnExceptions=False}"/>
<TextBox Text="{Binding StringField, ValidatesOnExceptions=True}"/>
public int IntField { get; set; }
private string stringField;
public string StringField
{
get { return stringField; }
set
{
throw new Exception(); text = stringField; }
}
}
公共整型整型字段{get;set;}
私有字符串字符串字段;
公共字符串字符串字段
{
获取{return stringField;}
设置
{
抛出新异常();text=stringField;}
}
}
在每个文本框中键入一个数字:
我希望能有所帮助。这取决于您使用的框架版本 在.NET4和4.5中,nemesv的答案是正确的。但它与MSDN文档不同 在.NET 3.5中,当引入
ValidatesOnExceptions
时,当数据转换失败时,没有默认的“红色边界”。如果您想拥有该功能,则需要将例外验证规则
显式添加到绑定的验证规则
中。上面说,如果您想要一个速记,您可以简单地将validationExceptions
设置为true
问题是4.0版和4.5版中的文档是错误的,因为它提到了.NET 3.5的行为是的,你写的东西是有效的,我不明白,但我做的很好,我总是得到红色边框,唯一不同的是我在DataGridTemplateColumn中使用了文本框。也许我做错了什么,谢谢