首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValidatesOnExceptions是如何工作的

ValidatesOnExceptions是如何工作的
EN

Stack Overflow用户
提问于 2011-12-08 17:25:49
回答 2查看 8K关注 0票数 6

基于这个例子

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validatesonexceptions.aspx

ValidatesOnExceptions似乎可以响应捕获自定义异常并将其添加到Validation.Errors集合。

问题是,即使ValidatesOnExceptions设置为false,我也有相同的行为。

有人能解释一下我错过了什么吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 17:50:37

ValidatesOnExceptions用于自定义异常显示。但是,如果将TextBox绑定到int属性,那么在绑定发生之前就会发生转换,这可能会导致“红色边框”。

试试看

代码语言:javascript
运行
复制
<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; }
    }
}

在每个文本框中键入一个数字:

  1. 由于数据转换而出现红色边框
  2. 没有红色边框becauseValidatesOnExceptions false
  3. 红色边框,因为ValidatesOnExceptions为真

希望能帮上忙。

票数 5
EN

Stack Overflow用户

发布于 2013-11-07 09:45:35

这取决于您使用的框架的版本。

在.NET 4和4.5中,线虫的答案是正确的。尽管如此,它还是与MSDN文档不同。

在.NET 3.5中,当ValidatesOnExceptions被引入时,当DataConversion失败时,没有默认的“红色边界线”。如果您想要这样做,需要显式地将ExceptionValidationRule添加到BindingValidationRules中。MSDN (3.5-4.5)说,如果您想要一个缩写,可以简单地将ValidatiosOnExceptions设置为true

问题是版本4.0和4.5中的文档是错误的,因为它指的是.NET 3.5的行为。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8435030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档