我有一个数据网格,我需要在其中使用代码添加一些列。其中一列只需要包含双值(无文本和空字符串)。使用Double属性上的代码执行绑定,因此当值有效时,这似乎可以正常工作。
当用户输入无效值时,该列变为红色。但是,如果我检查列的内容,它仍然是旧值,我可以看到rowChanged事件没有发生。
如果我什么都不做,我在输出中注意到抛出了system.formatexception,如果我添加了一个validationrule,它就会消失,我可以将validationResult返回false,但我不知道该怎么做它之后...
所以我的问题是:我可以在输出中捕获FormatException以及如何?
OR
我可以做些什么来“捕捉”我的验证规则失败?
答案 0 :(得分:0)
就个人而言,我更愿意避免错误,而不是处理它。你可以通过创建一个非常简单的数字TextBox
来做到这一点。这样,用户将无法输入无效值。您只需处理几个事件即可获得所需的结果,因此这是AttachedProperty
的完美候选者。如果您查看Create WPF TextBox that accepts only numbers帖子,可以了解如何执行此操作。
答案 1 :(得分:0)
绑定时尝试将值设置回源属性,并且当存在类型不匹配时抛出异常。为此,您可以设置绑定中的FallBackValue ,如果您不希望它变为红色,则在绑定中设置 ValidatesOnExceptions = false