2010-11-26 24 views
1

J'ai défini un modèle de contrôle pour montrer des erreurs de validation:
Pourquoi mon erreur de validation WPF ne s'affiche-t-elle pas?

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

J'ai défini une zone de texte comme suit:

<TextBox Text="{Binding Text}" PreviewTextInput="textBox1_PreviewTextInput" 
     Validation.ErrorTemplate="{StaticResource validationTemplate}" /> 

Je suis en train de la validation du code sous-jacent comme suit:

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


Maintenant, le problème est que la validation est en train de se déclencher et une bande rouge est affichée mais le message d'erreur à l'intérieur n'est pas affiché !! Peut être que je me trompe avec ce
Il est de lancer une exception dans la console (index hors des limites exception)

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

S'il vous plaît me guider au sujet Où vais-je tort?

Répondre

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

Votre RelativeSource est erroné

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

Je crois que son {RelativeSource Self} avec un espace au lieu de la période – Gishu

+0

oui - je dactylographiées trop vite - vous avez raison –

+0

ne fonctionne toujours pas !! :( – GuruC