2010-07-29 8 views
0

je coutume ErrorTemplate le Validation.ErrorTemplate sur commande suivante:WPF Validation: Comment garder la frontière taille correcte

  <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel LastChildFill="True"> 
         <Label DockPanel.Dock="Bottom" Foreground="Red" Content="{Binding ErrorContent}" Margin="0,5,0,0" Background="LightGray"/> 
         <Border BorderBrush="Red" BorderThickness="2"> 
          <AdornedElementPlaceholder/> 
         </Border> 
        </DockPanel> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 

Le problème est lorsque les ErrorContents sont plus larges que dire une zone de texte qui utilise ce style, le rouge Bordure elle-même au ErrorContents au lieu du contrôle d'origine. Comment puis-je forcer la bordure à toujours être la taille du contrôle, pas le ErrorContents?

Répondre

1

Modifiez l'alignement Horizontal de la bordure par défaut de Stretch à quelque chose comme gauche. Cela lui permettra d'utiliser la taille désirée, qui sera la taille de l'espace réservé plus la taille de la bordure, plutôt que d'être forcé de s'étirer jusqu'à la largeur du DockPanel.

<DockPanel LastChildFill="True"> 
    <Label DockPanel.Dock="Bottom" Foreground="Red" Content="{Binding ErrorContent}" Margin="0,5,0,0" Background="LightGray" /> 
    <Border BorderBrush="Red" BorderThickness="2" HorizontalAlignment="Left"> 
     <AdornedElementPlaceholder/> 
    </Border> 
</DockPanel> 
+0

La définition de DockPanel.Dock = "Left" fonctionne également. – AKoran