2010-12-29 15 views
5

ho implementato IDataErrorInfo nel mio ViewModel per restituire una stringa se la casella di testo ha errore.WPF- convalida -Il messaggio di errore di convalida va dietro gli altri comandi a causa della AdornerDecorator

public string this[string columnName] 
    { 
     get { return "Error-- This is a long error message - sd"; } 
    } 

Ma questo messaggio di errore va dietro l'altro controllo sull'interfaccia utente come mostrato di seguito.

alt text

Di seguito si riporta il codice XAML:

<Window x:Class="Test.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="600" Width="600"> 

<Window.Resources>   

    <ControlTemplate x:Key="validationTemplateNew"> 
     <DockPanel LastChildFill="True"> 
      <TextBlock Name="ErrorText" DockPanel.Dock="Bottom" Foreground="White" Background="Red" 
            FontSize="12" Padding="2" FontFamily="Trebuchet MS" 
            Margin="5,5,0,0"           
            TextWrapping="Wrap"           
            Text="{Binding [0].ErrorContent}" ></TextBlock> 
      <AdornedElementPlaceholder Name="ErrorTextBox" /> 
     </DockPanel> 
    </ControlTemplate> 
    <Style x:Key="ValidationStyle" TargetType="{x:Type TextBox}"> 
     <Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="True"> 
       <Setter Property="BorderBrush" Value="Red" /> 
       <Setter Property="BitmapEffect"> 
        <Setter.Value> 
         <BitmapEffectGroup> 
          <OuterGlowBitmapEffect GlowColor="Red" GlowSize="3" Noise="0.6"></OuterGlowBitmapEffect> 
         </BitmapEffectGroup> 
        </Setter.Value> 
       </Setter>      
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

<Grid> 
    <ItemsControl Name="ItemCtrl"> 

     <AdornerDecorator> 
      <TextBox 
      FontSize="11" 
      Margin="10" 
      Width="250"  
      VerticalAlignment="Center"           
      Text="{Binding Path=StrText, ValidatesOnDataErrors=True, 
        UpdateSourceTrigger=PropertyChanged}" 
      Validation.ErrorTemplate="{StaticResource validationTemplateNew}" 
      Style="{StaticResource ValidationStyle}" 

      > 
      </TextBox> 
     </AdornerDecorator> 
     <TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/> 
     <TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/> 
     <TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/> 
     <TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/> 
     <TextBox Width="250" Text="ASDFASFASDFASDFASDFASDFASDF"/> 
    </ItemsControl>   
</Grid> 

</Window> 

Si prega di farmi sapere come usare AdornerDecorator tale che il messaggio di errore si sovrappone gli altri controlli e non va dietro.

La mia domanda è tale che se io non uso AdornerDecorator, il messaggio di errore non viene visualizzato affatto.

risposta

3

Aggiunta Grid.ZIndex sul AdornerDecorator dovrebbe essere abbastanza

<Grid> 
    <ItemsControl Name="ItemCtrl"> 
     <AdornerDecorator Grid.ZIndex="1"> 
+0

Thanks .. Funziona .. –

Problemi correlati