Я определил шаблон элемента управления для отображения ошибок проверки:
<ControlTemplate x:Key="validationTemplate">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Background="Red"
TextWrapping="Wrap">
<TextBlock.Text>
<Binding Path="(Validation.Errors)[0].ErrorContent"
RelativeSource="{x:Static RelativeSource.Self}">
</Binding>
</TextBlock.Text>
</TextBlock>
<AdornedElementPlaceholder ></AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
Я определил TextBox следующим образом:
<TextBox Text="{Binding Text}" PreviewTextInput="textBox1_PreviewTextInput"
Validation.ErrorTemplate="{StaticResource validationTemplate}" />
Я устанавливаю проверку из кодапозади:
private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
TextBox txtBox = (TextBox)sender;
....
....
ValidationError validationError = new ValidationError(new DummyValidator(),
txtBox.GetBindingExpression(TextBox.TextProperty));
Validation.MarkInvalid(txtBox.GetBindingExpression(TextBox.TextProperty), validationError);
validationError.ErrorContent = "This is wrong input";
e.Handled = true;
}
Теперь проблема в том, что проверка запускается и отображается красная полоса, но внутри отображается сообщение об ошибке, которое не отображается!!Может быть, я не прав с этим
Выдает какое-то исключение в консоли (исключение индекса вне границ)
<Binding Path="(Validation.Errors)[0].ErrorContent"
RelativeSource="{x:Static RelativeSource.Self}">
Пожалуйста, укажите мне, где я иду не так?