2010-06-23 3 views
6

Je souhaite créer un modèle de validateur personnalisé pour mon application WPF.Validateur personnalisé WPF avec info-bulle

J'ai un modèle de infobulle:

<ControlTemplate x:Key="ToolTipTemplate" TargetType="ToolTip"> 
     <Grid Opacity="0.93" MaxWidth="200"> 
      <Border BorderBrush="Black" BorderThickness="1,1,1,1" CornerRadius="2"> 
       <Border.Background> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FFF5FAFE" Offset="0"/> 
         <GradientStop Color="#FFE5EFF9" Offset="1"/> 
        </LinearGradientBrush> 
       </Border.Background> 
       <Border.Effect> 
        <DropShadowEffect Color="#FF393939" /> 
       </Border.Effect> 
       <TextBlock Margin="10,10,10,10" 
        VerticalAlignment="Top" 
        TextWrapping="Wrap" 
        HorizontalAlignment="Left" 
        Text="{TemplateBinding Content}"> 
       </TextBlock> 
      </Border> 
     </Grid> 
    </ControlTemplate> 

Un autre modèle pour la validation:

<ControlTemplate x:Key="GlobalErrorTemplate"> 
     <DockPanel> 
      <Ellipse x:Name="PART_icon" 
       DockPanel.Dock="Right" 
       Margin="2,0" 
       Width="10" Height="10"> 
       <Ellipse.Fill> 
        <LinearGradientBrush> 
         <GradientStop Color="#11FF1111" Offset="0" /> 
         <GradientStop Color="#FFFF0000" Offset="1" /> 
        </LinearGradientBrush> 
       </Ellipse.Fill> 
       <Ellipse.ToolTip> 
        <ToolTip Template="{StaticResource ToolTipTemplate}" />       
       </Ellipse.ToolTip> 
      </Ellipse> 
      <AdornedElementPlaceholder x:Name="adorner" /> 
     </DockPanel> 
    </ControlTemplate> 

Et les styles pour les commandes, par exemple:

<Style TargetType="TextBox"> 
     <Setter Property="Validation.ErrorTemplate" Value="{StaticResource GlobalErrorTemplate}"/> 
     <!--<Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="True"> 
       <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" /> 
      </Trigger> 
     </Style.Triggers>--> 
    </Style> 

Comment puis-je régler l'info-bulle de l'Ellipse à (Validation.Errors) [0] .ErrorContent?

Merci, Mart

Répondre

7

Le DataContext du ErrorTemplate est déjà la valeur de Validation.Errors, de sorte que vous pouvez simplement définir votre infobulle comme:

<ToolTip Template="{StaticResource ToolTipTemplate}" Content="{Binding Path=[0].ErrorContent}" /> 
Questions connexes