基于这个例子
http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validatesonexceptions.aspx
ValidatesOnExceptions似乎可以响应捕获自定义异常并将其添加到Validation.Errors集合。
问题是,即使ValidatesOnExceptions设置为false,我也有相同的行为。
有人能解释一下我错过了什么吗?
谢谢
发布于 2011-12-08 17:50:37
ValidatesOnExceptions
用于自定义异常显示。但是,如果将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; }
}
}
在每个文本框中键入一个数字:
希望能帮上忙。
发布于 2013-11-07 09:45:35
这取决于您使用的框架的版本。
在.NET 4和4.5中,线虫的答案是正确的。尽管如此,它还是与MSDN文档不同。
在.NET 3.5中,当ValidatesOnExceptions
被引入时,当DataConversion失败时,没有默认的“红色边界线”。如果您想要这样做,需要显式地将ExceptionValidationRule
添加到Binding
的ValidationRules
中。MSDN (3.5-4.5)说,如果您想要一个缩写,可以简单地将ValidatiosOnExceptions
设置为true
。
问题是版本4.0和4.5中的文档是错误的,因为它指的是.NET 3.5的行为。
https://stackoverflow.com/questions/8435030
复制相似问题