当库访问Validation.Errors时,ArgumentOutOfRangeException

时间:2016-01-05 16:36:13

标签: c# wpf validation data-binding

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

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或代码隐藏解决方案都可以。

1 个答案:

答案 0 :(得分:0)

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