Почему моя ошибка проверки WPF не отображается? - PullRequest
1 голос
/ 26 ноября 2010

Я определил шаблон элемента управления для отображения ошибок проверки:

<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}">  

Пожалуйста, укажите мне, где я иду не так?

1 Ответ

0 голосов
/ 26 ноября 2010
<Binding Path="(Validation.Errors)[0].ErrorContent"
    RelativeSource="{x:Static RelativeSource.Self}">

Ваш RelativeSource неверен

<Binding Path="(Validation.Errors)[0].ErrorContent"
    RelativeSource="{RelativeSource Self}">
...