2010-07-29 9 views
11

C'è un modo per visualizzare il contenuto dell'errore in un TextBlock sotto il controllo simile al modo in cui il seguente imposta il suggerimento per contenere il testo dell'errore?WPF Display TextBlock con messaggio di errore di convalida sotto il controllo

 <Style x:Key="textBoxInError" TargetType="Control"> 
     <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel> 
         <TextBlock DockPanel.Dock="Left" Foreground="Red" FontWeight="Bold">*</TextBlock> 
         <TextBlock Text="WOULD LIKE TO SHOW WHAT TOOLTIP IS SHOWING" DockPanel.Dock="Bottom" Foreground="Red"/> 
         <Border BorderBrush="Red" BorderThickness="2"> 
          <AdornedElementPlaceholder/> 
         </Border> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="True"> 
       <Setter Property="ToolTip" 
         Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
        Path=(Validation.Errors)[0].ErrorContent}"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

In altre parole, io invece mostrare il messaggio di errore in un TextBlock sotto il controllo, invece di un suggerimento.

+0

Il problema che ho incontrato con questo è che il il testo del messaggio di errore verrà visualizzato sopra gli altri controlli che potrebbero trovarsi al di sotto di esso. Non abbatte tutto per creare spazio. Qualcosa che ha a che fare con il modello di errore che viene visualizzato sul livello di adorner ... non l'ho ancora capito. – statikuz

risposta

18

Il DataContext del ErrorTemplate è già il valore di Validation.Errors, così appena si può fare:

<TextBlock Text="{Binding [0].ErrorContent}" DockPanel.Dock="Bottom" Foreground="Red"/> 

o

<TextBlock Text="{Binding ErrorContent}" DockPanel.Dock="Bottom" Foreground="Red"/> 
Problemi correlati