【问题标题】:ArgumentOutOfRangeException when a library accesses Validation.Errors库访问 Validation.Errors 时出现 ArgumentOutOfRangeException
【发布时间】:2016-01-05 16:36:13
【问题描述】:

当我将文本框中的无效值更改为有效值时,我的输出会发生这种情况:

System.Windows.Data Error: 17 : Cannot get 'Item[]' value (type 'ValidationError') from '(Validation.Errors)' (type 'ReadOnlyObservableCollection`1'). BindingExpression:Path=AdornedElement.(0)[0].ErrorContent; DataItem='AdornedElementPlaceholder' (Name='adorner'); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') ArgumentOutOfRangeException:'System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index'

在阅读了一些关于 SO 的类似问题后,我知道为什么会发生这种情况。显然应该在验证模板中将绑定Path 设置为:

Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent

代替:

Path=AdornedElement.(Validation.Errors)[0].ErrorContent

避免访问空集合的[0] 元素。

但是,问题是我没有设置任何验证错误模板。很可能是某个图书馆为我设置了它。有什么方法可以访问模板并修复其绑定Path?或者只是抑制这些异常但保留模板。

XAML 或代码隐藏解决方案都可以。

【问题讨论】:

    标签: c# wpf validation data-binding


    【解决方案1】:

    尝试在绑定上使用 FallbackValue 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多