WPF数据网格中的捕获格式异常

时间:2013-11-28 16:03:35

标签: .net wpf vb.net datagrid

我有一个数据网格,我需要在其中使用代码添加一些列。其中一列只需要包含双值(无文本和空字符串)。使用Double属性上的代码执行绑定,因此当值有效时,这似乎可以正常工作。

当用户输入无效值时,该列变为红色。但是,如果我检查列的内容,它仍然是旧值,我可以看到rowChanged事件没有发生。

如果我什么都不做,我在输出中注意到抛出了system.formatexception,如果我添加了一个validationrule,它就会消失,我可以将validationResult返回false,但我不知道该怎么做它之后...

所以我的问题是:我可以在输出中捕获FormatException以及如何?

OR

我可以做些什么来“捕捉”我的验证规则失败?

2 个答案:

答案 0 :(得分:0)

就个人而言,我更愿意避免错误,而不是处理它。你可以通过创建一个非常简单的数字TextBox来做到这一点。这样,用户将无法输入无效值。您只需处理几个事件即可获得所需的结果,因此这是AttachedProperty的完美候选者。如果您查看Create WPF TextBox that accepts only numbers帖子,可以了解如何执行此操作。

答案 1 :(得分:0)

绑定时尝试将值设置回源属性,并且当存在类型不匹配时抛出异常。为此,您可以设置绑定中的FallBackValue ,如果您不希望它变为红色,则在绑定中设置 ValidatesOnExceptions = false