库访问Validation.Errors时出现ArgumentOutOfRangeException
本文关键字:ArgumentOutOfRangeException Errors 访问 Validation | 更新日期: 2023-09-27 18:29:01
当我在文本框中将无效值更改为有效值时,会在我的输出中发生这种情况:
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
以避免访问空集合的CCD_ 4元素。
然而,问题是,我还没有设置任何验证错误模板。很可能是某个库为我设置了它。有什么方法可以访问模板并修复其绑定Path
吗?或者只做任何事情来抑制这些异常,但保留模板。
XAML或代码隐藏解决方案都可以。
尝试在绑定上使用FallbackValue属性。