【问题标题】:Catch format exception in a WPF datagrid在 WPF 数据网格中捕获格式异常
【发布时间】:2013-12-14 17:55:59
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: .net wpf vb.net datagrid


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        • 2011-02-08
        • 1970-01-01
        • 2023-04-11
        • 2018-09-13
        • 2011-12-20
        • 2010-10-07
        相关资源
        最近更新 更多