2010-07-29 13 views
11

¿Hay alguna manera de mostrar el contenido del error en un bloque de texto debajo del control similar a cómo lo siguiente establece que la información sobre herramientas contenga el texto de error?WPF Mostrar bloque de texto con mensaje de error de validación debajo del control

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

En otras palabras, en vez mostrar el mensaje de error en un TextBlock debajo del control en lugar de una información sobre herramientas.

+0

El problema que he encontrado con esto es que la mensaje de error textblock se representará por encima de otros controles que pueden estar debajo de él. No golpea todo para darle espacio. Algo que ver con la plantilla de error que se muestra en la capa adorner ... todavía no lo hemos descubierto. – statikuz

Respuesta

18

El DataContext de la ErrorTemplate ya es el valor de Validation.Errors, por lo que sólo puede hacer:

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

o

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