2011-01-31 4 views
0

J'ai créé ControlTemplate qui est affiché s'il y a une erreur de validation sur ma zone de texte. Mon ControlTemplate ressemble queControlTemplate et validation - Comment positionner des éléments?

<ControlTemplate x:Key="TextBoxErrorTemplate"> 
    <TextBlock Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock> 
</ControlTemplate> 

Toutefois, si des erreurs de validation occure textBlock apparaît sur textBox - et l'utilisateur ne peut pas entrer la valeur correcte. Yat-il un moyen de définir la position de TextBlock - celui qui affiche des informations d'erreur?

Répondre

2

ErrorTemplates sont pour ornant le contrôle et non pour changer ses propriétés internes, pour ce faire, vous devez utiliser un style avec le déclencheur respectif:

  <Style TargetType="TextBox"> 
       <Style.Triggers> 
        <Trigger Property="Validation.HasError" Value="True"> 
         <Setter Property="Foreground" Value="Orange"/> 
         <Setter Property="FontSize" Value="12"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 

Si vous souhaitez afficher un texte, vous pouvez utiliser un modèle comme ceci:

<ControlTemplate x:Key="TextBoxErrorTemplate"> 
     <StackPanel Orientation="Horizontal"> 
      <AdornedElementPlaceholder/> 
      <TextBlock Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock> 
     </StackPanel> 
    </ControlTemplate> 

Le TextBlock sera affiché sur la droite de la zone de texte.

Si vous voulez juste afficher des messages d'erreur, je vous suggère de définir l'info-bulle de la TextBox et de la lier aux erreurs de validation.

+0

Pourriez-vous expliquer cette balise il n'y a pas de balise d'ouverture et il semble que vous fermiez cette balise – lastOfMohicans

+0

http://msdn.microsoft.com/fr-fr/library/system.windows.controls.adornedelementplaceholder .aspx –

Questions connexes