Шаблон ошибки проверки - обязательное исключение
Я использую следующий шаблон для ошибки проверки:
<ControlTemplate>
<Border BorderBrush="Red" BorderThickness="1">
<Grid>
<Polygon Points="8,8 8,0 0,0"
Stroke="Black"
StrokeThickness="1"
Fill="Red"
HorizontalAlignment="Right"
VerticalAlignment="Top"
ToolTip="{Binding ElementName=adorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" />
<AdornedElementPlaceholder x:Name="adorner"/>
</Grid>
</Border>
</ControlTemplate>
ToolTip работает нормально, но после выхода из текущей записи выбрано следующее исключение:
Ошибка System.Windows.Data: 17: невозможно получить значение "Item []" (тип 'ValidationError') из '(Validation.Errors)' (тип 'ReadOnlyObservableCollection`1'). BindingExpression:. Путь = AdornedElement (0) [0].ErrorContent; DataItem = 'AdornedElementPlaceholder' (Name= 'adorner'); целевой элемент "Полигон" (Name= ''); target - это "ToolTip" (тип "Объект" ) ArgumentOutOfRangeException: 'System.ArgumentOutOfRangeException: Указанный аргумент вышел за пределы допустимых значений.
Я попытался использовать свойство HasError
, но не удалось. У кого-нибудь есть идея?
Ответы
Ответ 1
При отсутствии ошибок проверки привязка по-прежнему пытается получить доступ к первому элементу ReadOnlyObservableCollection, возвращенному Validation.Errors, но поскольку он пуст, генерируется исключение.
Система привязки просто проглатывает исключение, но ее все еще раздражает и ненужно.
Вместо привязки вот так:
Path=AdornedElement.(Validation.Errors)[0].ErrorContent
.. вы можете сделать это так, чтобы избежать исключения:
Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent